usr/src/cmd/wbem/provider/com/sun/wbem/solarisprovider/srm/SRMProviderDataModel.java
author Mark J. Nelson <Mark.J.Nelson@Sun.COM>
Wed, 06 Aug 2008 16:29:39 -0600
changeset 7298 b69e27387f74
parent 0 68f95e015346
permissions -rw-r--r--
6733918 Teamware has retired, please welcome your new manager, Mercurial 4758439 some files use "current date" sccs keywords 6560843 asm sources should not rely on .file "%M%" for naming STT_FILE symbols 6560958 Solaris:: perl modules should not use SCCS keywords in version information 6729074 webrev doesn't deal well with remote ssh hg parents
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     1
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     2
 * CDDL HEADER START
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     3
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     4
 * The contents of this file are subject to the terms of the
7298
b69e27387f74 6733918 Teamware has retired, please welcome your new manager, Mercurial
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents: 0
diff changeset
     5
 * Common Development and Distribution License (the "License").
b69e27387f74 6733918 Teamware has retired, please welcome your new manager, Mercurial
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents: 0
diff changeset
     6
 * You may not use this file except in compliance with the License.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     7
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     8
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     9
 * or http://www.opensolaris.org/os/licensing.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    10
 * See the License for the specific language governing permissions
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    11
 * and limitations under the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    12
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    13
 * When distributing Covered Code, include this CDDL HEADER in each
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    14
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    15
 * If applicable, add the following below this CDDL HEADER, with the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    16
 * fields enclosed by brackets "[]" replaced with your own identifying
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    17
 * information: Portions Copyright [yyyy] [name of copyright owner]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    18
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    19
 * CDDL HEADER END
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    20
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    21
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    22
 * Copyright (c) 2001 by Sun Microsystems, Inc.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    23
 * All rights reserved.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    24
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    25
 * SRMProviderDataModel.java
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    26
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    27
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    28
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    29
package com.sun.wbem.solarisprovider.srm;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    30
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    31
import javax.wbem.cim.*;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    32
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    33
import java.util.LinkedHashMap;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    34
import java.util.Iterator;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    35
import java.util.Vector;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    36
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    37
/**
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    38
 * This is the base class for the SRM provider data models.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    39
 * @author Sun Microsystems
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    40
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    41
abstract class SRMProviderDataModel implements SRMProviderProperties {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    42
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    43
    /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    44
     * The updated flag is set if this data model has been updated, data model
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    45
     * be reomoved from their list.that hasn't been
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    46
     */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    47
    private boolean		updated;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    48
    private CIMObjectPath	op;   // the CIM object path to 'ci'
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    49
    protected CIMInstance	ci;   // the CIM instance of this data model
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    50
    protected Vector		opProperties; // object path properties
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    51
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    52
    /**
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    53
     * The keyValTab table contains, for each properties of the CIM class,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    54
     * one entry, where the hash key is the key from the RDS protocol and
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    55
     * the hash value is a object of a class that implements the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    56
     * PropertyAccessInterface interface. It knows the type of the property
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    57
     * and consequently how to access it.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    58
     */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    59
    protected LinkedHashMap   keyValTab;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    60
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    61
    // Computer name, common for all instances
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    62
    protected static String csName = null;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    63
    // OS name, common for all instances
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    64
    protected static String osName = null;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    65
    // provider's key name
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    66
    protected String name = null;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    67
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    68
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    69
    /**
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    70
     * Constructor, initialize the keyValTab. So, the setProperty() method can
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    71
     * find the suitable property access object.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    72
     */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    73
    public SRMProviderDataModel() {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    74
	initKeyValTable();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    75
    }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    76
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    77
    /**
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    78
     * Get a cim object path to a Solaris_SRMxxy object.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    79
     * @param cc - the class reference
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    80
     * @return	object path to a Solaris_SRMxxyy instance
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    81
     *		hosted by this object.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    82
     */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    83
    public CIMInstance getCIMInstance(CIMClass cc) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    84
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    85
        if (ci == null) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    86
            ci = cc.newInstance();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    87
	    Iterator i = keyValTab.values().iterator();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    88
	    while (i.hasNext()) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    89
		((PropertyAccessInterface) i.next()).
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    90
		    set(ci, PropertyAccessInterface.FLUSH, null);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    91
	    }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    92
	    setCIMInstance(true);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    93
        }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    94
        return ci;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    95
    }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    96
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    97
    /**
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    98
     * Get a CIM object path to the CIM instance hosted by this object.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    99
     * @param elementName The name of the instance 
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   100
     * @return object path to the  CIM instance hosted by this object.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   101
     */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   102
    public CIMObjectPath getCIMObjectPath(String elementName) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   103
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   104
        if (op == null) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   105
            op = new CIMObjectPath(elementName);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   106
            op.setNameSpace(NAMESPACE);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   107
            if (opProperties == null) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   108
		opProperties = new Vector();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   109
                setOpPropertiesVector();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   110
            }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   111
            op.setKeys(opProperties);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   112
        }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   113
        return op;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   114
    }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   115
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   116
    /**
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   117
     * Return all properties of this CIM instance as a string of name and
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   118
     * values pairs.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   119
     * @return	String of properties name and value pairs.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   120
     */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   121
    public String toString() {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   122
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   123
	Iterator i = keyValTab.values().iterator();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   124
	StringBuffer sb = new StringBuffer();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   125
	while (i.hasNext()) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   126
	    sb.append(((PropertyAccessInterface) i.next()).toString());
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   127
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   128
	return sb.toString();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   129
    }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   130
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   131
    /**
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   132
     * Return all property values of this CIM instance as a string. The
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   133
     * values are in order defined in mof file and separated by ' '.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   134
     * @return	String of property values separated by ' '.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   135
     */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   136
    public String toBulkData() {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   137
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   138
	Iterator i = keyValTab.values().iterator();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   139
	StringBuffer sb = new StringBuffer();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   140
	sb.append(name +  ' ');
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   141
	while (i.hasNext()) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   142
	    sb.append(((PropertyAccessInterface) i.next()).getValue() + ' ');
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   143
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   144
	sb.append("\n");
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   145
	return sb.toString();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   146
    }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   147
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   148
    /**
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   149
     * Set a property to the given value. Which property and how to access it
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   150
     * will be find in the keyValTab according to the given key.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   151
     * @param	key	hash key value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   152
     * @param	val	the property value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   153
     */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   154
    void setProperty(String key, String val) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   155
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   156
	PropertyAccessInterface ac;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   157
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   158
	if ((ac = (PropertyAccessInterface) keyValTab.get(key)) == null) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   159
	    /* 
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   160
	     * The rds has sent unknown key value pair,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   161
	     * just keep it secret
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   162
	     */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   163
	} else {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   164
	    /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   165
	     * Since, this method can be called before the cim instance has been
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   166
	     * created we have to check that.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   167
	     * If ci hasn't been created keep the value in cache, otherwise
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   168
	     * write it through the cache into the CIM instance.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   169
	     */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   170
	    ac.set(ci, (ci == null) ? PropertyAccessInterface.CACHE :
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   171
		PropertyAccessInterface.CHECK_WTHROUGH, val);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   172
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   173
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   174
    } // end setProperty
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   175
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   176
    /**
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   177
     * If the value v is different form the current property value,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   178
     * set a string property.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   179
     * @param	b	force to set the property
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   180
     * @param	n	the name of the property
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   181
     * @param	v	the property value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   182
     */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   183
    void setStrProp(boolean b, String n,  String v) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   184
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   185
        if (b || v.equals((String) (ci.getProperty(n).getValue().getValue())))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   186
	    ci.setProperty(n, new CIMValue(v));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   187
    }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   188
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   189
    /**
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   190
     * Should be used to mark this data model as updated.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   191
     * @param	b	true marks this model as currently updated.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   192
     */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   193
    void setUpdated(boolean b) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   194
	updated = b;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   195
    }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   196
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   197
    /**
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   198
     * Returns true if this data model has been updated in the last update
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   199
     * process.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   200
     * @return	the updated flag
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   201
     */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   202
    boolean isUpdated() {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   203
	return updated;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   204
    }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   205
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   206
    /**
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   207
     * Set additional properties, that can't be set through the setProperty
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   208
     * method.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   209
     * @param	newInstance indicates a new instance and therefore force to
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   210
     * to set all properties.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   211
     * @return	the updated flag
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   212
     */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   213
    abstract protected void setCIMInstance(boolean newInstance);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   214
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   215
    /**
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   216
     * Set the properties of the CIM object path instance. The properties
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   217
     * are saved in the opProperties class field.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   218
     */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   219
    abstract protected void setOpPropertiesVector();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   220
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   221
    /**
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   222
     * Set the keyValTab hash table.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   223
     * The keyValTab table contains, for each properties of the CIM class,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   224
     * one entry, where the hash key is the key from the RDS protocol and
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   225
     * the hash value is a object of a class that implements the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   226
     * PropertyAccessInterface interface. This object knows the type of
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   227
     * the property and consequently how to access it.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   228
     */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   229
    abstract protected void initKeyValTable();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   230
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   231
} // end class SRMProviderDataModel