/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.xsd.ui.editor;
import org.eclipse.xsd.XSDConstrainingFacet;
import org.eclipse.xsd.XSDSimpleTypeDefinition;
import org.teiid.designer.ui.forms.FormUtil;
/**
* @since 8.0
*/
public class FacetValue implements Cloneable {
public boolean isFixedLocal;
public Object value;
public Object defaultValue;
public String description;
public XSDSimpleTypeDefinition type;
public XSDConstrainingFacet facet;
//
// Constructors:
//
public FacetValue() {
}
public FacetValue(FacetValue fv) {
copyValuesOf(fv);
}
//
// Setup Methods:
//
public void copyValuesOf(FacetValue fv) {
if (fv != null) {
// copy contents:
isFixedLocal = fv.isFixedLocal;
type = fv.type;
value = fv.value;
defaultValue = fv.defaultValue;
description = fv.description;
facet = fv.facet;
} else {
clear();
} // endif
}
public void clear() {
isFixedLocal = false;
type = null;
value = null;
defaultValue = null;
description = null;
facet = null;
}
public FacetValue cloneValue() {
try {
return (FacetValue) super.clone();
} catch (CloneNotSupportedException e) {
// should never happen, since we implement cloneable
return new FacetValue(this);
} // endtry
}
//
// Data methods:
//
public boolean isDefault() {
return FormUtil.safeEquals(description, null, true) // desc null
&& (facet == null // no facet defined yet -- assumes someone is setting the facet before checking this
|| isFixedByParent() // parent has fixed this
|| FormUtil.safeEquals(value, defaultValue)); // value same as default
}
public void resetToDefault() {
value = defaultValue;
description = null;
}
public boolean isInherited() {
return facet != null
&& facet.getContainer() != type;
}
public boolean isFixedByParent() {
return FacetHelper.isFixed(facet)
&& isInherited();
}
//
// Overrides:
//
@Override
public boolean equals(Object obj) {
if (super.equals(obj)) {
return true;
} // endif
if (obj instanceof FacetValue) {
FacetValue fv = (FacetValue) obj;
// TODO update
return //isDefault == fv.isDefault &&
isFixedLocal == fv.isFixedLocal
&& isInherited() == fv.isInherited()
// && SimpleComponentSet.safeEquals(currentFacetHolder, fv.currentFacetHolder)
&& FormUtil.safeEquals(value, fv.value)
&& FormUtil.safeEquals(description, fv.description);
} // endif
return false;
}
@Override
public String toString() {
return "FacetValue: isDefault="+isDefault() //$NON-NLS-1$
+"; isFixedLocal="+isFixedLocal //$NON-NLS-1$
+"; isInherited="+isInherited() //$NON-NLS-1$
// +"; currentHolder="+currentFacetHolder //$NON-NLS-1$
+"; value="+value //$NON-NLS-1$
+"; desc="+description; //$NON-NLS-1$
}
}