+
+ TypeInfo type = value.typeInfo();
+
+ if (type.mBaseType == ValueType.RESOURCEMODEL) {
+ return null;
+ }
+
+ List<String> values = new ArrayList<String>();
+
+ AttributeProperty prop = att.property();
+ if (null == prop) {
+ // Adding the current value of the attribute.
+ values.add(new AttributeValueStringConverter(value).toString());
+ return values;
+ }
+
+ if (type.mType == ValueType.ARRAY) {
+ if (type.mDepth == 1) {
+ ArrayProperty arrayProperty = prop.asArray();
+ if (null != arrayProperty) {
+ AttributeProperty childProp = arrayProperty
+ .getElementProperty();
+ switch (childProp.getType()) {
+ case INTEGER:
+ IntegerProperty intProperty = childProp.asInteger();
+ if (null != intProperty) {
+ values.addAll(getAllValues(att, intProperty,
+ Type.INTEGER));
+ }
+ break;
+ case DOUBLE:
+ DoubleProperty dblProperty = childProp.asDouble();
+ if (null != dblProperty) {
+ values.addAll(getAllValues(att, dblProperty,
+ Type.DOUBLE));
+ }
+ break;
+ case BOOLEAN:
+ BooleanProperty boolProperty = childProp
+ .asBoolean();
+ if (null != boolProperty) {
+ values.addAll(getAllValues(att, boolProperty,
+ Type.BOOLEAN));
+ }
+ break;
+ case STRING:
+ StringProperty stringProperty = childProp
+ .asString();
+ if (null != stringProperty) {
+ values.addAll(getAllValues(att, stringProperty,
+ Type.STRING));
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ } else {
+ switch (prop.getType()) {
+ case INTEGER:
+ IntegerProperty intProperty = prop.asInteger();
+ if (null != intProperty) {
+ values.addAll(getAllValues(att, intProperty,
+ Type.INTEGER));
+ }
+ break;
+ case DOUBLE:
+ DoubleProperty dblProperty = prop.asDouble();
+ if (null != dblProperty) {
+ values.addAll(getAllValues(att, dblProperty,
+ Type.DOUBLE));
+ }
+ break;
+ case BOOLEAN:
+ BooleanProperty boolProperty = prop.asBoolean();
+ if (null != boolProperty) {
+ values.addAll(getAllValues(att, boolProperty,
+ Type.BOOLEAN));
+ }
+ break;
+ case STRING:
+ StringProperty stringProperty = prop.asString();
+ if (null != stringProperty) {
+ values.addAll(getAllValues(att, stringProperty,
+ Type.STRING));
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ return values;
+ }
+
+ public List<String> getAllValues(SimulatorResourceAttribute attribute,
+ IntegerProperty intProperty, AttributeProperty.Type type) {
+ List<String> values = new ArrayList<String>();
+
+ if (intProperty.hasRange()) {
+ int min = (int) intProperty.min();
+ int max = (int) intProperty.max();
+ for (int iVal = min; iVal <= max; iVal++) {
+ values.add(String.valueOf(iVal));
+ }
+ } else if (intProperty.hasValues()) {
+ for (Integer val : intProperty.getValues()) {
+ values.add(String.valueOf(val));
+ }
+ } else {
+ AttributeValue value = attribute.value();
+ if (null != value && null != value.get()) {
+ // Adding the current value of the attribute.
+ values.add(String.valueOf(value.get()));
+ }
+ }
+ return values;
+ }
+
+ public List<String> getAllValues(SimulatorResourceAttribute attribute,
+ DoubleProperty dblProperty, AttributeProperty.Type type) {
+ NumberFormat formatter = NumberFormat.getInstance();
+ List<String> values = new ArrayList<String>();
+
+ if (dblProperty.hasRange()) {
+ double min = (double) dblProperty.min();
+ double max = (double) dblProperty.max();
+ for (double val = min; val <= max; val += 0.1) {
+ formatter.setMaximumFractionDigits(1);
+ formatter.setMinimumFractionDigits(1);
+ values.add(formatter.format(val));
+ }
+ } else if (dblProperty.hasValues()) {
+ for (Double val : dblProperty.getValues()) {
+ values.add(String.valueOf(val));
+ }
+ } else {
+ AttributeValue value = attribute.value();
+ if (null != value && null != value.get()) {
+ // Adding the current value of the attribute.
+ values.add(String.valueOf(value.get()));
+ }
+ }
+ return values;
+ }
+
+ public List<String> getAllValues(SimulatorResourceAttribute attribute,
+ BooleanProperty boolProperty, AttributeProperty.Type type) {
+ List<String> values = new ArrayList<String>();
+ values.add("true");
+ values.add("false");
+ return values;
+ }
+
+ public List<String> getAllValues(SimulatorResourceAttribute attribute,
+ StringProperty stringProperty, AttributeProperty.Type type) {
+ List<String> values = new ArrayList<String>();
+
+ if (stringProperty.hasValues()) {
+ for (String val : stringProperty.getValues()) {
+ values.add(String.valueOf(val));
+ }
+ } else {
+ AttributeValue value = attribute.value();
+ if (null != value && null != value.get()) {
+ // Adding the current value of the attribute.
+ values.add(String.valueOf(value.get()));
+ }
+ }
+ return values;
+ }
+
+ public int getResourceCount() {
+ return data.getResourceCount();