com.coi.tools.os.win.RegistryLogItem Maven / Gradle / Ivy
/*
* IzPack - Copyright 2001-2008 Julien Ponge, All Rights Reserved.
*
* http://izpack.org/
* http://izpack.codehaus.org/
*
* Copyright 2005 Klaus Bartz
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.coi.tools.os.win;
import java.io.Serializable;
/**
* Data container for Windows registry logging. This container is used to hold old and new created
* registry data used at rewinding the registry changes.
*
* @author Klaus Bartz
*/
public class RegistryLogItem implements Cloneable, Serializable
{
/**
*
*/
private static final long serialVersionUID = 3618134559108444211L;
/** Types of log items */
/**
* Identifier for removed key
*/
public static final int REMOVED_KEY = 1;
/**
* Identifier for created key
*/
public static final int CREATED_KEY = 2;
/**
* Identifier for removed value
*/
public static final int REMOVED_VALUE = 3;
/**
* Identifier for created value
*/
public static final int CREATED_VALUE = 4;
/**
* Identifier for changed value
*/
public static final int CHANGED_VALUE = 5;
private int type;
private int root;
private String key;
private String valueName;
private RegDataContainer newValue = null;
private RegDataContainer oldValue = null;
/**
* Default constructor.
*/
private RegistryLogItem()
{
super();
}
/**
* Constructor with settings.
*
* @param type type of loging item. Possible are REMOVED_KEY, CREATED_KEY, REMOVED_VALUE,
* CREATED_VALUE and CHANGED_VALUE
* @param root id for the registry root
* @param key key name of the item which should be logged
* @param valueName name of the value of the item which should be logged if it is a value type,
* else null
* @param newValue new value of the registry entry if it is a value type, else null
* @param oldValue old value of the registry entry if it is a value type, else null
*/
public RegistryLogItem(int type, int root, String key, String valueName,
RegDataContainer newValue, RegDataContainer oldValue)
{
this.type = type;
this.root = root;
this.key = key;
this.valueName = valueName;
this.newValue = newValue;
this.oldValue = oldValue;
}
/**
* Returns the key name of this logging item.
*
* @return the key name of this logging item
*/
public String getKey()
{
return key;
}
/**
* Returns the new value of this logging item.
*
* @return the new value of this logging item
*/
public RegDataContainer getNewValue()
{
return newValue;
}
/**
* Returns the old value of this logging item.
*
* @return the old value of this logging item
*/
public RegDataContainer getOldValue()
{
return oldValue;
}
/**
* Returns the root id of this logging item.
*
* @return the root id of this logging item
*/
public int getRoot()
{
return root;
}
/**
* Returns the type id of this logging item.
*
* @return the type id of this logging item
*/
public int getType()
{
return type;
}
/**
* Returns the value name of this logging item.
*
* @return the value name of this logging item
*/
public String getValueName()
{
return valueName;
}
/**
* Sets the key name to the given string
*
* @param string to be used as key name
*/
public void setKey(String string)
{
key = string;
}
/**
* Sets the new value to the given RegDataContainer.
*
* @param container to be used as new value
*/
public void setNewValue(RegDataContainer container)
{
newValue = container;
}
/**
* Sets the old value to the given RegDataContainer.
*
* @param container to be used as old value
*/
public void setOldValue(RegDataContainer container)
{
oldValue = container;
}
/**
* Sets the root id for this logging item.
*
* @param i root id to be used for this logging item
*/
public void setRoot(int i)
{
root = i;
}
/**
* Sets the type id for this logging item.
*
* @param i type id to be used for this logging item
*/
public void setType(int i)
{
type = i;
}
/**
* Sets the value name to the given string
*
* @param string to be used as value name
*/
public void setValueName(String string)
{
valueName = string;
}
public Object clone() throws CloneNotSupportedException
{
RegistryLogItem retval = (RegistryLogItem) super.clone();
if (newValue != null)
{
retval.newValue = (RegDataContainer) newValue.clone();
}
if (oldValue != null)
{
retval.oldValue = (RegDataContainer) oldValue.clone();
}
return (retval);
}
}