/**
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
*
* The contents of this file are subject to the terms
* of the Common Development and Distribution License
* (the License). You may not use this file except in
* compliance with the License.
*
* You can obtain a copy of the License at
* https://opensso.dev.java.net/public/CDDLv1.0.html or
* opensso/legal/CDDLv1.0.txt
* See the License for the specific language governing
* permission and limitations under the License.
*
* When distributing Covered Code, include this CDDL
* Header Notice in each file and include the License file
* at opensso/legal/CDDLv1.0.txt.
* If applicable, add the following below the CDDL Header,
* with the fields enclosed by brackets [] replaced by
* your own identifying information:
* "Portions Copyrighted [year] [name of copyright owner]"
*
* $Id: StateData.java,v 1.2 2008/06/25 05:51:24 qcheng Exp $
*
*/
package com.sun.identity.install.tools.configurator;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class StateData implements Serializable, Cloneable, InstallConstants {
public StateData(String instanceName, boolean isInstanceData,
boolean isConfiguredInstance) {
setIsInstanceDataFlag(isInstanceData);
setIsConfiguredInstanceFlag(isConfiguredInstance);
nameValueMap = new HashMap();
if (isInstanceData) {
this.instanceName = instanceName;
} else {
instanceName = STR_IS_GLOBAL_DATA_ID;
}
}
public Object get(String key) {
return nameValueMap.get(key);
}
public boolean contains(String key) {
return nameValueMap.containsKey(key);
}
public void put(String key, Object data) {
nameValueMap.put(key, data);
}
public void remove(String key) {
nameValueMap.remove(key);
}
public void putAll(Map map) {
nameValueMap.putAll(map);
}
private void setIsInstanceDataFlag(boolean flag) {
isInstanceData = flag;
}
public boolean isInstanceData() {
return isInstanceData;
}
public String getInstanceName() {
return instanceName;
}
public void setInstanceName(String instanceName) {
this.instanceName = instanceName;
}
public Map getNameValueMap() {
return nameValueMap;
}
public void setInstanceAsConfigured(boolean isConfigured) {
isConfiguredInstance = isConfigured;
}
public boolean isConfiguredInstance() {
return isConfiguredInstance;
}
private void setIsConfiguredInstanceFlag(boolean flag) {
isConfiguredInstance = flag;
}
public void clear() {
nameValueMap.clear();
}
public boolean isEmpty() {
return nameValueMap.isEmpty();
}
public void copyMissingData(Map data) {
// Just make sure that we don't overwrite this objects nameValuePair
// contents.
Iterator iter = data.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry me = (Map.Entry) iter.next();
if (!getNameValueMap().containsKey(me.getKey())) {
getNameValueMap().put(me.getKey(), me.getValue());
}
}
}
public Object clone() {
StateData newStateData = new StateData(getInstanceName(),
isInstanceData(), isConfiguredInstance());
newStateData.getNameValueMap().putAll(getNameValueMap());
return newStateData;
}
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append(" instanceName: ");
sb.append(instanceName).append(LINE_SEP);
sb.append(" isInstanceData: ");
sb.append(isInstanceData).append(LINE_SEP);
sb.append(" nameValueMap:").append(LINE_SEP);
Iterator iter = nameValueMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry me = (Map.Entry) iter.next();
sb.append(" ");
sb.append((String) me.getKey()).append(" = ");
sb.append(me.getValue().toString()).append("\n");
}
return sb.toString();
}
private String instanceName;
private boolean isInstanceData;
private HashMap nameValueMap;
// State to determine if the data was loaded from DataStore.
private transient boolean isConfiguredInstance;
}