package oic.simulator.serviceprovider.model;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.Set;
+import java.util.Vector;
import oic.simulator.serviceprovider.utils.Constants;
import oic.simulator.serviceprovider.utils.Utility;
import org.oic.simulator.AttributeProperty;
-import org.oic.simulator.AttributeProperty.Type;
import org.oic.simulator.AttributeValue;
import org.oic.simulator.AttributeValue.ValueType;
+import org.oic.simulator.BooleanProperty;
+import org.oic.simulator.DoubleProperty;
+import org.oic.simulator.IntegerProperty;
import org.oic.simulator.SimulatorResourceAttribute;
+import org.oic.simulator.StringProperty;
public class AttributeHelper {
private String attributeName;
private Set<String> allowedValues;
private String attributeDflValue;
- private Type validValuesType;
+ public enum ValidValuesType {
+ RANGE, VALUESET, UNKNOWN
+ }
+
+ private ValidValuesType validValuesType;
public AttributeHelper() {
allowedValues = new HashSet<String>();
- setValidValuesType(Type.UNKNOWN);
+ setValidValuesType(ValidValuesType.UNKNOWN);
min = max = "";
}
this.attributeDflValue = attributeDflValue;
}
- public Type getValidValuesType() {
+ public ValidValuesType getValidValuesType() {
return validValuesType;
}
- public void setValidValuesType(Type validValuesType) {
+ public void setValidValuesType(ValidValuesType validValuesType) {
this.validValuesType = validValuesType;
}
}
boolean result = true;
if (attributeType.equals(Constants.STRING)) {
- if (validValuesType == Type.VALUESET && null != allowedValues) {
+ if (validValuesType == ValidValuesType.VALUESET
+ && null != allowedValues) {
result = allowedValues.contains(value);
} else {
result = true;
result = false;
}
} else {
- if (validValuesType == Type.RANGE) {
+ if (validValuesType == ValidValuesType.RANGE) {
if (attributeType.equals(Constants.INT)) {
int min, max, dflValue;
try {
min = Double.parseDouble(this.min);
max = Double.parseDouble(this.max);
dflValue = Double.parseDouble(value);
- if (dflValue < min || dflValue > max) {
+ boolean found = false;
+ for (double val = min; val <= max; val += 1.0) {
+ if (dflValue == val) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
result = false;
}
} catch (Exception e) {
result = false;
}
}
- } else if (validValuesType == Type.VALUESET
+ } else if (validValuesType == ValidValuesType.VALUESET
&& null != allowedValues && !allowedValues.isEmpty()) {
- result = allowedValues.contains(value);
+ boolean found = false;
+ if (attributeType.equals(Constants.INT)) {
+ Iterator<String> itr = allowedValues.iterator();
+ while (itr.hasNext()) {
+ String val = itr.next();
+ int v1 = Integer.parseInt(val);
+ int v2 = Integer.parseInt(value);
+ if (v1 == v2) {
+ found = true;
+ break;
+ }
+ }
+ } else {
+ Iterator<String> itr = allowedValues.iterator();
+ while (itr.hasNext()) {
+ String val = itr.next();
+ double v1 = Double.parseDouble(val);
+ double v2 = Double.parseDouble(value);
+ if (v1 == v2) {
+ found = true;
+ break;
+ }
+ }
+ }
+ if (!found) {
+ result = false;
+ }
}
}
return result;
return false;
}
- public LocalResourceAttribute convertToLocalResourceAttribute() {
- LocalResourceAttribute attribute = new LocalResourceAttribute();
-
- // Initially disabling the automation
- attribute.setAutomationInProgress(false);
-
- // Assigning the default automation interval
- attribute
- .setAutomationUpdateInterval(Constants.DEFAULT_AUTOMATION_INTERVAL);
-
- // Setting the default automation type
- attribute.setAutomationType(Constants.DEFAULT_AUTOMATION_TYPE);
-
+ public SimulatorResourceAttribute convertToSimulatorResourceAttribute() {
AttributeValue attValue = null;
AttributeProperty attProperty = null;
SimulatorResourceAttribute simResAtt;
ValueType valueType = Utility.getAttributeTypeEnum(attributeType);
switch (valueType) {
case INTEGER:
+ IntegerProperty.Builder intPropertyBuilder = new IntegerProperty.Builder();
attValue = new AttributeValue(
Integer.parseInt(attributeDflValue));
- if (validValuesType == Type.VALUESET) {
- attProperty = new AttributeProperty(
- Utility.convertSetToArrayInt(Utility
+
+ // Set default value.
+ intPropertyBuilder.setDefaultValue(Integer
+ .parseInt(attributeDflValue));
+
+ if (validValuesType == ValidValuesType.VALUESET) {
+ // Set allowed values.
+ intPropertyBuilder.setValues(Utility
+ .convertSetToArrayInt(Utility
.convertSetStringToSetObject(allowedValues,
valueType)));
- } else if (validValuesType == Type.RANGE) {
- attProperty = new AttributeProperty(
- Double.parseDouble(min), Double.parseDouble(max));
- } else {
- attProperty = null;
+ } else if (validValuesType == ValidValuesType.RANGE) {
+ // Set Range.
+ intPropertyBuilder.setRange(Integer.parseInt(min),
+ Integer.parseInt(max));
}
+ attProperty = intPropertyBuilder.build();
+ break;
case DOUBLE:
+ DoubleProperty.Builder dblPropertyBuilder = new DoubleProperty.Builder();
attValue = new AttributeValue(
Double.parseDouble(attributeDflValue));
- if (validValuesType == Type.VALUESET) {
- attProperty = new AttributeProperty(
- Utility.convertSetToArrayDouble(Utility
+
+ // Set default value.
+ dblPropertyBuilder.setDefaultValue(Double
+ .parseDouble(attributeDflValue));
+
+ if (validValuesType == ValidValuesType.VALUESET) {
+ // Set allowed values.
+ dblPropertyBuilder.setValues(Utility
+ .convertSetToArrayDouble(Utility
.convertSetStringToSetObject(allowedValues,
valueType)));
- } else if (validValuesType == Type.RANGE) {
- attProperty = new AttributeProperty(
- Double.parseDouble(min), Double.parseDouble(max));
- } else {
- attProperty = null;
+ } else if (validValuesType == ValidValuesType.RANGE) {
+ // Set Range.
+ dblPropertyBuilder.setRange(Double.parseDouble(min),
+ Double.parseDouble(max));
}
+ attProperty = dblPropertyBuilder.build();
break;
case BOOLEAN:
attValue = new AttributeValue(
Boolean.parseBoolean(attributeDflValue));
- boolean[] arr = { true, false };
- attProperty = new AttributeProperty(arr);
+ BooleanProperty.Builder boolPropertyBuilder = new BooleanProperty.Builder();
+ // Set Default Value.
+ boolPropertyBuilder.setDefaultValue(Boolean
+ .parseBoolean(attributeDflValue));
+
+ attProperty = boolPropertyBuilder.build();
break;
case STRING:
attValue = new AttributeValue(attributeDflValue);
- if (validValuesType == Type.VALUESET) {
- attProperty = new AttributeProperty(
- Utility.convertSetToArrayString(Utility
+ StringProperty.Builder stringPropertyBuilder = new StringProperty.Builder();
+
+ // Set Default Value.
+ stringPropertyBuilder.setDefaultValue(attributeDflValue);
+
+ if (validValuesType == ValidValuesType.VALUESET) {
+ // Set Allowed Values.
+ stringPropertyBuilder.setValues(Utility
+ .convertSetToArrayString(Utility
.convertSetStringToSetObject(allowedValues,
valueType)));
- } else {
- attProperty = null;
}
+ attProperty = stringPropertyBuilder.build();
break;
default:
break;
}
simResAtt = new SimulatorResourceAttribute(attributeName, attValue,
attProperty);
- attribute.setResourceAttributeRef(simResAtt);
- return attribute;
+ return simResAtt;
}
}
\ No newline at end of file