You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2012/12/06 11:10:34 UTC
[25/51] [partial] ISIS-188: moving modules into core
http://git-wip-us.apache.org/repos/asf/isis/blob/dbb64345/framework/core/applib/src/main/src-archived/old-valueholders/FloatingPointNumber.java
----------------------------------------------------------------------
diff --git a/framework/core/applib/src/main/src-archived/old-valueholders/FloatingPointNumber.java b/framework/core/applib/src/main/src-archived/old-valueholders/FloatingPointNumber.java
new file mode 100644
index 0000000..e7a06e1
--- /dev/null
+++ b/framework/core/applib/src/main/src-archived/old-valueholders/FloatingPointNumber.java
@@ -0,0 +1,257 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.isis.application.valueholder;
+
+import org.apache.isis.application.BusinessObject;
+import org.apache.isis.application.Title;
+import org.apache.isis.application.value.ValueParseException;
+
+import java.text.NumberFormat;
+import java.text.ParseException;
+
+
+public class FloatingPointNumber extends Magnitude {
+ private static NumberFormat FORMAT = NumberFormat.getNumberInstance();
+ private static final long serialVersionUID = 1L;
+ private boolean isNull;
+ private double value;
+
+ public FloatingPointNumber() {
+ this(null, 0.0);
+ }
+
+ public FloatingPointNumber(final double value) {
+ this(null, value);
+ }
+
+ public FloatingPointNumber(final FloatingPointNumber value) {
+ this(null, value);
+ }
+
+ public FloatingPointNumber(final BusinessObject parent) {
+ this(parent, 0.0);
+ }
+
+ public FloatingPointNumber(final BusinessObject parent, final double value) {
+ super(parent);
+ this.value = value;
+ isNull = false;
+ }
+
+ public FloatingPointNumber(final BusinessObject parent, final FloatingPointNumber value) {
+ super(parent);
+ this.isNull = value.isNull;
+ this.value = value.value;
+ }
+
+ public void add(final double value) {
+ this.setValue(this.doubleValue() + value);
+ }
+
+ public void add(final FloatingPointNumber number) {
+ this.setValue(this.doubleValue() + number.doubleValue());
+ }
+
+ public void clear() {
+ setValuesInternal(0, true, true);
+ }
+
+ /**
+ * Copies the specified object's contained data to this instance. param object the object to copy the data
+ * from
+ */
+ public void copyObject(final BusinessValueHolder object) {
+ if (object == null) {
+ this.clear();
+ } else if (!(object instanceof FloatingPointNumber)) {
+ throw new IllegalArgumentException("Can only copy the value of a FloatingPointNumber object");
+ } else {
+ setValue((FloatingPointNumber) object);
+ }
+ }
+
+ public void divide(final double value) {
+ this.setValue(this.doubleValue() / value);
+ }
+
+ public void divide(final FloatingPointNumber number) {
+ this.setValue(this.doubleValue() / number.value);
+ }
+
+ /**
+ * Returns this value as an double.
+ */
+ public double doubleValue() {
+ this.ensureAtLeastPartResolved();
+ return value;
+ }
+
+ public boolean equals(final Object obj) {
+ this.ensureAtLeastPartResolved();
+ if (this == obj) {
+ return true;
+ }
+ if (!(obj instanceof FloatingPointNumber)) {
+ return false;
+ }
+ FloatingPointNumber object = (FloatingPointNumber) obj;
+ if (object.isEmpty() && isEmpty()) {
+ return true;
+ }
+ return object.value == value;
+ }
+
+ /**
+ * Returns this value as an float.
+ */
+ public float floatValue() {
+ this.ensureAtLeastPartResolved();
+ return (float) value;
+ }
+
+ public String getObjectHelpText() {
+ return "A floating point number object.";
+ }
+
+ /**
+ * Returns this value as an int.
+ */
+ public int intValue() {
+ this.ensureAtLeastPartResolved();
+ return (int) value;
+ }
+
+ public boolean isEmpty() {
+ this.ensureAtLeastPartResolved();
+ return isNull;
+ }
+
+ public boolean isEqualTo(final Magnitude magnitude) {
+ this.ensureAtLeastPartResolved();
+ if (magnitude instanceof FloatingPointNumber) {
+ if (isNull) {
+ return magnitude.isEmpty();
+ }
+ return ((FloatingPointNumber) magnitude).value == value;
+ } else {
+ throw new IllegalArgumentException("Parameter must be of type FloatingPointNumber");
+ }
+ }
+
+ public boolean isLessThan(final Magnitude magnitude) {
+ this.ensureAtLeastPartResolved();
+ if (magnitude instanceof FloatingPointNumber) {
+ return !isEmpty() && !magnitude.isEmpty() && value < ((FloatingPointNumber) magnitude).value;
+ } else {
+ throw new IllegalArgumentException("Parameter must be of type FloatingPointNumber");
+ }
+ }
+
+ /**
+ * Returns this value as an long.
+ */
+ public long longValue() {
+ this.ensureAtLeastPartResolved();
+ return (long) value;
+ }
+
+ public void multiply(final double value) {
+ this.setValue(this.doubleValue() * value);
+ }
+
+ public void multiply(final FloatingPointNumber number) {
+ this.setValue(this.doubleValue() * number.value);
+ }
+
+ public void parseUserEntry(final String text) throws ValueParseException {
+ if (text.trim().equals("")) {
+ clear();
+ } else {
+ try {
+ setValue(FORMAT.parse(text).doubleValue());
+ } catch (ParseException e) {
+ throw new ValueParseException("Invalid number", e);
+ }
+ }
+ }
+
+ /**
+ * Reset this floating point number so it contains 0.0.
+ *
+ *
+ */
+ public void reset() {
+ setValuesInternal(0.0, false, true);
+ isNull = false;
+ }
+
+ public void restoreFromEncodedString(final String data) {
+ if (data == null || data.equals("NULL")) {
+ setValuesInternal(0.0, true, false);
+ } else {
+ setValuesInternal(Double.valueOf(data).doubleValue(), false, false);
+ }
+ }
+
+ public String asEncodedString() {
+ this.ensureAtLeastPartResolved();
+ return isNull ? "NULL" : String.valueOf(doubleValue());
+ }
+
+ public void setValue(final double value) {
+ setValuesInternal(value, false, true);
+ }
+
+ public void setValue(final FloatingPointNumber value) {
+ setValuesInternal(value.value, value.isNull, true);
+ }
+
+ private void setValuesInternal(final double value, final boolean isNull, final boolean notify) {
+ if (notify) {
+ ensureAtLeastPartResolved();
+ }
+ this.value = value;
+ this.isNull = isNull;
+ if (notify) {
+ parentChanged();
+ }
+ }
+
+ /**
+ * Returns this value as an short.
+ */
+ public short shortValue() {
+ this.ensureAtLeastPartResolved();
+ return (short) value;
+ }
+
+ public void subtract(final double value) {
+ add(-value);
+ }
+
+ public void subtract(final FloatingPointNumber number) {
+ add(-number.value);
+ }
+
+ public Title title() {
+ return new Title(isEmpty() ? "" : FORMAT.format(value));
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dbb64345/framework/core/applib/src/main/src-archived/old-valueholders/Label.java
----------------------------------------------------------------------
diff --git a/framework/core/applib/src/main/src-archived/old-valueholders/Label.java b/framework/core/applib/src/main/src-archived/old-valueholders/Label.java
new file mode 100644
index 0000000..7cdb1aa
--- /dev/null
+++ b/framework/core/applib/src/main/src-archived/old-valueholders/Label.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.isis.application.valueholder;
+
+import org.apache.isis.application.BusinessObject;
+
+
+/**
+ * A read-only text string. This class does support value listeners.
+ */
+public class Label extends TextString {
+ private static final long serialVersionUID = 1L;
+
+ public Label() {
+ super();
+ }
+
+ public Label(final String text) {
+ super(text);
+ }
+
+ public Label(final BusinessObject parent) {
+ super(parent);
+ }
+
+ public Label(final BusinessObject parent, final String text) {
+ super(parent, text);
+ }
+
+ public boolean userChangeable() {
+ return false;
+ }
+
+ public String getObjectHelpText() {
+ return "A Label object.";
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dbb64345/framework/core/applib/src/main/src-archived/old-valueholders/Logical.java
----------------------------------------------------------------------
diff --git a/framework/core/applib/src/main/src-archived/old-valueholders/Logical.java b/framework/core/applib/src/main/src-archived/old-valueholders/Logical.java
new file mode 100644
index 0000000..676dc06
--- /dev/null
+++ b/framework/core/applib/src/main/src-archived/old-valueholders/Logical.java
@@ -0,0 +1,204 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.isis.application.valueholder;
+
+import org.apache.isis.application.BusinessObject;
+import org.apache.isis.application.Title;
+import org.apache.isis.application.value.ValueParseException;
+
+
+/**
+ * Value object representing a true or false value.
+ * <p>
+ * NOTE: this class currently does not support about listeners.
+ * </p>
+ */
+public class Logical extends BusinessValueHolder {
+ public final static String FALSE = "false";
+ private static final long serialVersionUID = 1L;
+ public final static String TRUE = "true";
+ private boolean flag;
+ private boolean isNull;
+
+ /**
+ * Creates a Logical value set to false.
+ */
+ public Logical() {
+ this(null, false);
+ }
+
+ /**
+ * Creates a Logical value set to the specified value.
+ */
+ public Logical(final boolean flag) {
+ this(null, flag);
+ }
+
+ /**
+ * Creates a Logical value set to false.
+ */
+ public Logical(final BusinessObject parent) {
+ this(parent, false);
+ }
+
+ /**
+ * Creates a Logical value set to the specified value.
+ */
+ public Logical(final BusinessObject parent, final boolean flag) {
+ super(parent);
+ this.flag = flag;
+ isNull = false;
+ }
+
+ public boolean booleanValue() {
+ this.ensureAtLeastPartResolved();
+ return flag;
+ }
+
+ public void clear() {
+ setValuesInternal(false, true, true);
+ }
+
+ public void copyObject(final BusinessValueHolder object) {
+ if (object == null) {
+ this.clear();
+ } else if (!(object instanceof Logical)) {
+ throw new IllegalArgumentException("Can only copy the value of a Logical object");
+ } else {
+ setValue((Logical) object);
+ }
+ }
+
+ public boolean equals(final Object obj) {
+ this.ensureAtLeastPartResolved();
+ if (this == obj) {
+ return true;
+ }
+ if (!(obj instanceof Logical)) {
+ return false;
+ }
+ Logical object = (Logical) obj;
+ if (object.isEmpty() && isEmpty()) {
+ return true;
+ }
+ return object.flag == flag;
+ }
+
+ public String getObjectHelpText() {
+ return "A Logical object containing either True or False.";
+ }
+
+ public boolean isEmpty() {
+ this.ensureAtLeastPartResolved();
+ return isNull;
+ }
+
+ /**
+ * Compares the flags if specified object is a <code>Logical</code> object else returns false.
+ *
+ * @see BusinessValueHolder#isSameAs(BusinessValueHolder)
+ */
+ public boolean isSameAs(final BusinessValueHolder object) {
+ this.ensureAtLeastPartResolved();
+ if (object instanceof Logical) {
+ return ((Logical) object).flag == flag;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Returns true is this object is representing a true state.
+ */
+ public boolean isSet() {
+ this.ensureAtLeastPartResolved();
+ return flag;
+ }
+
+ public void parseUserEntry(final String text) throws ValueParseException {
+ if (text.trim().equals("")) {
+ clear();
+ } else {
+ if ("true".startsWith(text.toLowerCase())) {
+ set();
+ } else {
+ reset();
+ }
+ }
+ }
+
+ /**
+ * Resets the objects state to false.
+ */
+ public void reset() {
+ setValuesInternal(false, false, true);
+ }
+
+ public void restoreFromEncodedString(final String data) {
+ if (data == null || data.equals("NULL")) {
+ setValuesInternal(false, true, false);
+ } else {
+ setValuesInternal(data.equals("true"), false, false);
+ }
+ }
+
+ public String asEncodedString() {
+ if (isEmpty()) {
+ return "NULL";
+ } else {
+ return isSet() ? "true" : "false";
+ }
+ }
+
+ /**
+ * Sets the objects state to true.
+ */
+ public void set() {
+ setValue(true);
+ }
+
+ public void setValue(final boolean set) {
+ setValuesInternal(set, false, true);
+ }
+
+ public void setValue(final Logical value) {
+ if (value == null) {
+ this.clear();
+ } else {
+ setValuesInternal(value.flag, value.isNull, true);
+ }
+ }
+
+ private void setValuesInternal(final boolean value, final boolean isNull, final boolean notify) {
+ if (notify) {
+ ensureAtLeastPartResolved();
+ }
+ this.flag = value;
+ this.isNull = isNull;
+ if (notify) {
+ parentChanged();
+ }
+ }
+
+ public Title title() {
+ return new Title(isEmpty() ? "" : (flag ? "TRUE" : "FALSE"));
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dbb64345/framework/core/applib/src/main/src-archived/old-valueholders/Magnitude.java
----------------------------------------------------------------------
diff --git a/framework/core/applib/src/main/src-archived/old-valueholders/Magnitude.java b/framework/core/applib/src/main/src-archived/old-valueholders/Magnitude.java
new file mode 100644
index 0000000..c1464b9
--- /dev/null
+++ b/framework/core/applib/src/main/src-archived/old-valueholders/Magnitude.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.isis.application.valueholder;
+
+import org.apache.isis.application.BusinessObject;
+
+
+public abstract class Magnitude extends BusinessValueHolder {
+ private static final long serialVersionUID = 1L;
+
+ protected Magnitude(final BusinessObject parent) {
+ super(parent);
+ }
+
+ public boolean isBetween(final Magnitude minMagnitude, final Magnitude maxMagnitude) {
+ this.ensureAtLeastPartResolved();
+ return isGreaterThanOrEqualTo(minMagnitude) && isLessThanOrEqualTo(maxMagnitude);
+ }
+
+ public abstract boolean isEqualTo(final Magnitude magnitude);
+
+ public boolean isGreaterThan(final Magnitude magnitude) {
+ this.ensureAtLeastPartResolved();
+ return magnitude.isLessThan(this);
+ }
+
+ public boolean isGreaterThanOrEqualTo(final Magnitude magnitude) {
+ this.ensureAtLeastPartResolved();
+ return !isLessThan(magnitude);
+ }
+
+ public abstract boolean isLessThan(final Magnitude magnitude);
+
+ public boolean isLessThanOrEqualTo(final Magnitude magnitude) {
+ this.ensureAtLeastPartResolved();
+ return !isGreaterThan(magnitude);
+ }
+
+ public Magnitude max(final Magnitude magnitude) {
+ this.ensureAtLeastPartResolved();
+ return isGreaterThan(magnitude) ? this : magnitude;
+ }
+
+ public Magnitude min(final Magnitude magnitude) {
+ this.ensureAtLeastPartResolved();
+ return isLessThan(magnitude) ? this : magnitude;
+ }
+
+ /**
+ * delegates the comparsion to the <code>isEqualTo</code> method if specified object is a
+ * <code>Magnitude</code> else returns false.
+ *
+ * @see BusinessValueHolder#isSameAs(BusinessValueHolder)
+ */
+ public final boolean isSameAs(BusinessValueHolder object) {
+ this.ensureAtLeastPartResolved();
+ if (object instanceof Magnitude) {
+ return isEqualTo((Magnitude) object);
+ } else {
+ return false;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dbb64345/framework/core/applib/src/main/src-archived/old-valueholders/Money.java
----------------------------------------------------------------------
diff --git a/framework/core/applib/src/main/src-archived/old-valueholders/Money.java b/framework/core/applib/src/main/src-archived/old-valueholders/Money.java
new file mode 100644
index 0000000..85c0f95
--- /dev/null
+++ b/framework/core/applib/src/main/src-archived/old-valueholders/Money.java
@@ -0,0 +1,322 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.isis.application.valueholder;
+
+import org.apache.isis.application.BusinessObject;
+import org.apache.isis.application.Title;
+import org.apache.isis.application.value.ValueParseException;
+
+import java.text.NumberFormat;
+import java.text.ParseException;
+
+import org.apache.log4j.Logger;
+
+
+/**
+ * Value object representing a monetary value including a currency type.
+ * <p>
+ * This object <i>does</i> support value listeners
+ * </p>
+ */
+public class Money extends Magnitude { // implements java.io.Externalizable {
+ private static final long serialVersionUID = 1L;
+ private static final NumberFormat CURRENCY_FORMAT = NumberFormat.getCurrencyInstance();
+ private static final NumberFormat NUMBER_FORMAT = NumberFormat.getNumberInstance();
+ private boolean isNull;
+ private double amount;
+
+ /**
+ * Create a Money with zero value.
+ */
+ public Money() {
+ this(null, 0);
+ }
+
+ /**
+ * Create a Money object with the same value as the specified object.
+ */
+ public Money(final Money money) {
+ this(null, money);
+ }
+
+ public Money(final double amount) {
+ this(null, amount);
+ }
+
+ /**
+ * Create a Money with zero value.
+ */
+ public Money(final BusinessObject parent) {
+ super(parent);
+ setValue(0);
+ }
+
+ /**
+ * Create a Money object with the same value as the specified object.
+ */
+ public Money(final BusinessObject parent, final Money money) {
+ super(parent);
+ setValue(money);
+ }
+
+ public Money(final BusinessObject parent, final double amount) {
+ super(parent);
+ setValue(amount);
+ }
+
+ /**
+ * Add the specified money to this money.
+ */
+ public void add(final Money money) {
+ setValue(doubleValue() + money.amount);
+ }
+
+ public void clear() {
+ setValuesInternal(0, true, true);
+ }
+
+ /**
+ * Copies the specified object's contained data to this instance.
+ *
+ * @param object
+ * the object to copy the data from
+ */
+ public void copyObject(final BusinessValueHolder object) {
+ if (object == null) {
+ clear();
+ } else if (!(object instanceof Money)) {
+ throw new IllegalArgumentException("Can only copy the value of a Money object");
+ } else {
+ setValue((Money) object);
+ }
+
+ }
+
+ /**
+ * Divides this value by the specified amount.
+ */
+ public void divideBy(final double operand) {
+ // amount /= operand;
+ setValue(doubleValue() / operand);
+ }
+
+ public double doubleValue() {
+ ensureAtLeastPartResolved();
+ return amount;
+ }
+
+ public boolean equals(final Object obj) {
+ ensureAtLeastPartResolved();
+ if (this == obj) {
+ return true;
+ }
+ if (!(obj instanceof Money)) {
+ return false;
+ }
+ Money object = (Money) obj;
+ if (object.isEmpty() && isEmpty()) {
+ return true;
+ }
+ return object.amount == amount;
+ }
+
+ /**
+ * Returns this value as an float.
+ */
+ public float floatValue() {
+ ensureAtLeastPartResolved();
+ return (float) amount;
+ }
+
+ public String getObjectHelpText() {
+ return "A Money object stored as dollars/cents, pounds/pence, euro/cents.";
+ }
+
+ /**
+ * Returns this value as an int.
+ */
+ public int intValue() {
+ ensureAtLeastPartResolved();
+ return (int) amount;
+ }
+
+ public boolean isEmpty() {
+ ensureAtLeastPartResolved();
+ return isNull;
+ }
+
+ public boolean isGreaterThan(final double amount) {
+ return !isLessThanOrEqualTo(amount);
+ }
+
+ public boolean isGreaterThanOrEqualTo(final double amount) {
+ return !isLessThan(amount);
+ }
+
+ public boolean isEqualTo(final Magnitude magnitude) {
+ ensureAtLeastPartResolved();
+ if (magnitude instanceof Money) {
+ if (isNull) {
+ return magnitude.isEmpty();
+ }
+
+ return ((Money) magnitude).amount == amount;
+ } else {
+ throw new IllegalArgumentException("Parameter must be of type Money");
+ }
+ }
+
+ public boolean isLessThan(final Magnitude magnitude) {
+ ensureAtLeastPartResolved();
+ if (magnitude instanceof Money) {
+ return !isEmpty() && !magnitude.isEmpty() && (amount < ((Money) magnitude).amount);
+ } else {
+ throw new IllegalArgumentException("Parameter must be of type Money");
+ }
+ }
+
+ public boolean isLessThan(final double amount) {
+ return !isEmpty() && this.amount < amount;
+ }
+
+ public boolean isLessThanOrEqualTo(final double amount) {
+ return !isEmpty() && this.amount <= amount;
+ }
+
+ /**
+ * Returns true if this value is less than zero.
+ */
+ public boolean isNegative() {
+ ensureAtLeastPartResolved();
+ return amount < 0.0;
+ }
+
+ /**
+ * Returns this value as an long.
+ */
+ public long longValue() {
+ ensureAtLeastPartResolved();
+ return (long) amount;
+ }
+
+ /**
+ * Multiply this value by the specified amount.
+ */
+ public void multiplyBy(final double operand) {
+ // amount *= operand;
+ setValue(doubleValue() * operand);
+ }
+
+ public void parseUserEntry(final String text) throws ValueParseException {
+ if (text.trim().equals("")) {
+ clear();
+ } else {
+ try {
+ // amount = CURRENCY_FORMAT.parse(text).doubleValue();
+ setValue(CURRENCY_FORMAT.parse(text).doubleValue());
+ } catch (ParseException tryAgain) {
+ try {
+ // amount = NUMBER_FORMAT.parse(text).doubleValue();
+ setValue(NUMBER_FORMAT.parse(text).doubleValue());
+ } catch (ParseException e) {
+ throw new ValueParseException("Invalid number", e);
+ }
+ }
+ }
+ }
+
+ /**
+ * Reset this money so it contains 0.
+ */
+ public void reset() {
+ setValuesInternal(0, false, true);
+ }
+
+ /**
+ * Set this value to have the specified values.
+ */
+ public void setValue(final double amount) {
+ setValuesInternal(amount, false, true);
+ }
+
+ /**
+ * Set this value to be the same as the specified value.
+ */
+ public void setValue(final Money value) {
+ setValuesInternal(value.doubleValue(), value.isNull, true);
+ }
+
+ private void setValuesInternal(final double value, final boolean isNull, final boolean notify) {
+ if (notify) {
+ ensureAtLeastPartResolved();
+ }
+ this.amount = value;
+ this.isNull = isNull;
+ if (notify) {
+ parentChanged();
+ }
+ }
+
+ /**
+ * Returns this value as an short.
+ */
+ public short shortValue() {
+ ensureAtLeastPartResolved();
+ return (short) amount;
+ }
+
+ /**
+ * Subtract the specified amount from this value.
+ */
+ public void subtract(final Money money) {
+ // checkCanOperate();
+ // amount -= money.amount;
+ setValue(doubleValue() - money.amount);
+ }
+
+ public Title title() {
+ return new Title(isEmpty() ? "" : CURRENCY_FORMAT.format(amount));
+ }
+
+ public void restoreFromEncodedString(final String data) {
+ if (data == null || data.equals("NULL")) {
+ setValuesInternal(0, true, false);
+ } else {
+ setValuesInternal(Double.valueOf(data).doubleValue(), false, false);
+ }
+ }
+
+ public String asEncodedString() {
+ // note: isEmpty does this.ensureAtLeastPartResolved();
+ if (isEmpty()) {
+ return "NULL";
+ } else {
+ return String.valueOf(doubleValue());
+ }
+ }
+
+ public Logger getLogger() {
+ return logger;
+ }
+
+ private final static Logger logger = Logger.getLogger(Money.class);
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dbb64345/framework/core/applib/src/main/src-archived/old-valueholders/MoneyTest.java
----------------------------------------------------------------------
diff --git a/framework/core/applib/src/main/src-archived/old-valueholders/MoneyTest.java b/framework/core/applib/src/main/src-archived/old-valueholders/MoneyTest.java
new file mode 100644
index 0000000..4546109
--- /dev/null
+++ b/framework/core/applib/src/main/src-archived/old-valueholders/MoneyTest.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.isis.application.valueholder;
+
+public class MoneyTest extends ValueTestCase {
+
+ public void testSaveRestore() throws Exception {
+ Money money1 = new Money();
+ money1.parseUserEntry("2003-1-4");
+ assertFalse(money1.isEmpty());
+
+ Money money2 = new Money();
+ money2.restoreFromEncodedString(money1.asEncodedString());
+ assertEquals(money1.floatValue(), money2.floatValue(), 0.0);
+ assertFalse(money2.isEmpty());
+ }
+
+ public void testSaveRestorOfNull() throws Exception {
+ Money money1 = new Money();
+ money1.clear();
+ assertTrue("Money isEmpty", money1.isEmpty());
+
+ Money money2 = new Money();
+ money2.restoreFromEncodedString(money1.asEncodedString());
+ assertEquals(money1.floatValue(), money2.floatValue(), 0.0);
+ assertTrue(money2.isEmpty());
+ }
+
+ public void testComparisons() {
+ Money money = new Money(5.00);
+ assertTrue("> 1", money.isGreaterThan(1.00));
+ assertTrue(">= 5", money.isGreaterThanOrEqualTo(5.00));
+ assertTrue(">= 4.9", money.isGreaterThanOrEqualTo(4.90));
+ assertTrue("not >= 5.1", !money.isGreaterThanOrEqualTo(5.10));
+
+ assertTrue("< 5.1", money.isLessThan(5.10));
+ assertTrue("<= 5.1", money.isLessThanOrEqualTo(5.10));
+ assertTrue("<= 5", money.isLessThanOrEqualTo(5.00));
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dbb64345/framework/core/applib/src/main/src-archived/old-valueholders/MultilineTextString.java
----------------------------------------------------------------------
diff --git a/framework/core/applib/src/main/src-archived/old-valueholders/MultilineTextString.java b/framework/core/applib/src/main/src-archived/old-valueholders/MultilineTextString.java
new file mode 100644
index 0000000..43e2ed1
--- /dev/null
+++ b/framework/core/applib/src/main/src-archived/old-valueholders/MultilineTextString.java
@@ -0,0 +1,115 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.isis.application.valueholder;
+
+import org.apache.isis.application.BusinessObject;
+
+
+public class MultilineTextString extends TextString {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ *
+ */
+ public MultilineTextString() {
+ super();
+ }
+
+ /**
+ * @param text
+ */
+ public MultilineTextString(final String text) {
+ super(text);
+ }
+
+ /**
+ * @param textString
+ */
+ public MultilineTextString(final MultilineTextString textString) {
+ super(textString);
+ }
+
+ /**
+ *
+ */
+ public MultilineTextString(final BusinessObject parent) {
+ super(parent);
+ }
+
+ /**
+ * @param text
+ */
+ public MultilineTextString(final BusinessObject parent, final String text) {
+ super(parent, text);
+ }
+
+ /**
+ * @param textString
+ */
+ public MultilineTextString(final BusinessObject parent, final MultilineTextString textString) {
+ super(parent, textString);
+ }
+
+ /*
+ * @see org.apache.isis.object.value.TextString#setValue(java.lang.String)
+ */
+ public void setValue(final String text) {
+ super.setValue(convertLineEnding(text));
+ }
+
+ public void restoreFromEncodedString(final String data) {
+ super.restoreFromEncodedString(convertLineEnding(data));
+ }
+
+ protected boolean isCharDisallowed(final char c) {
+ return c == '\r';
+ }
+
+ private String convertLineEnding(final String original) {
+ if (original == null)
+ return null;
+ /*
+ * convert all line ending to LF e.g. CR -> LF CRLF -> LF
+ */
+ StringBuffer text = new StringBuffer(original.length());
+
+ for (int i = 0; i < original.length(); i++) {
+ if (original.charAt(i) == '\r') {
+ text.append('\n');
+
+ // skip next char if LF (ie is a CRLF sequence
+ if (i + 1 < original.length() && original.charAt(i + 1) == '\n') {
+ i++;
+ }
+ } else {
+ text.append(original.charAt(i));
+ }
+ }
+
+ return text.toString();
+ }
+
+ /*
+ * int numberOfLine() int maxWidth();
+ *
+ */
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dbb64345/framework/core/applib/src/main/src-archived/old-valueholders/MultilineTextStringTests.java
----------------------------------------------------------------------
diff --git a/framework/core/applib/src/main/src-archived/old-valueholders/MultilineTextStringTests.java b/framework/core/applib/src/main/src-archived/old-valueholders/MultilineTextStringTests.java
new file mode 100644
index 0000000..8242459
--- /dev/null
+++ b/framework/core/applib/src/main/src-archived/old-valueholders/MultilineTextStringTests.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.isis.application.valueholder;
+
+public class MultilineTextStringTests extends ValueTestCase {
+
+ public static void main(final String[] args) {
+ junit.textui.TestRunner.run(MultilineTextStringTests.class);
+ }
+
+ public void testInvalidCharacters() {
+
+ MultilineTextString t = new MultilineTextString("Hello\r");
+ assertEquals("Hello\n", t.stringValue());
+
+ t = new MultilineTextString("Hello\r\n");
+ assertEquals("Hello\n", t.stringValue());
+
+ t = new MultilineTextString("Hello\n\r");
+ assertEquals("Hello\n\n", t.stringValue());
+ }
+
+ public void testTitle() {
+ String text = "Hello\nYou";
+ MultilineTextString t = new MultilineTextString(text);
+ assertEquals("Hello\nYou", t.title().toString());
+
+ }
+
+ public void testValidCharacters() {
+ String text = "Hello\tYou\n";
+ MultilineTextString t = new MultilineTextString(text);
+ assertEquals(text, t.stringValue());
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dbb64345/framework/core/applib/src/main/src-archived/old-valueholders/Option.java
----------------------------------------------------------------------
diff --git a/framework/core/applib/src/main/src-archived/old-valueholders/Option.java b/framework/core/applib/src/main/src-archived/old-valueholders/Option.java
new file mode 100644
index 0000000..3d3381c
--- /dev/null
+++ b/framework/core/applib/src/main/src-archived/old-valueholders/Option.java
@@ -0,0 +1,228 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.isis.application.valueholder;
+
+import org.apache.isis.application.BusinessObject;
+import org.apache.isis.application.Title;
+import org.apache.isis.application.value.ValueParseException;
+
+
+/**
+ * Value object representing one of a number of choices. The options are specified as strings.
+ * <p>
+ * NOTE: this class currently does not support about listeners.
+ * </p>
+ */
+public class Option extends BusinessValueHolder {
+ private String[] options;
+ private int selection;
+
+ public Option() {
+ this((BusinessObject) null);
+ }
+
+ public Option(final String[] options) {
+ this(null, options, 0);
+ }
+
+ public Option(final String[] options, final int selected) {
+ this(null, options, selected);
+ }
+
+ public Option(final BusinessObject parent) {
+ this(parent, new String[] { "" }, 0);
+ }
+
+ public Option(final BusinessObject parent, final String[] options) {
+ this(parent, options, 0);
+ }
+
+ public Option(final BusinessObject parent, final String[] options, final int selected) {
+ super(parent);
+ if ((options == null) || (options.length == 0)) {
+ throw new IllegalArgumentException("Options array must exist and have at least one element");
+ }
+
+ this.options = options;
+ selection = selected;
+ }
+
+ public void clear() {
+ setSelectionInternal(-1, true);
+ }
+
+ /**
+ * Copies the specified object's contained data to this instance. param object the object to copy the data
+ * from
+ */
+ public void copyObject(final BusinessValueHolder object) {
+ if (!(object instanceof Option)) {
+ throw new IllegalArgumentException("Can only copy the value of a SelectionObject object");
+ }
+
+ setSelectionIndex(((Option) object).selection);
+ }
+
+ public boolean equals(final Object obj) {
+ ensureAtLeastPartResolved();
+ if (this == obj) {
+ return true;
+ }
+ if (!(obj instanceof Option)) {
+ return false;
+ }
+ Option object = (Option) obj;
+ if (object.isEmpty() && isEmpty()) {
+ return true;
+ }
+ return object.selection == selection;
+ }
+
+ public String getObjectHelpText() {
+ return "A Selection object.";
+ }
+
+ public String getOption(final int index) {
+ return options[index];
+ }
+
+ public String getOptionAt(final int index) {
+ return options[index];
+ }
+
+ public String[] getOptions() {
+ return options;
+ }
+
+ public String getSelection() {
+ return isEmpty() ? "" : options[selection];
+ }
+
+ public int getSelectionIndex() {
+ ensureAtLeastPartResolved();
+ return selection;
+ }
+
+ public boolean isEmpty() {
+ ensureAtLeastPartResolved();
+ return selection == -1;
+ }
+
+ /**
+ * Compares the selected options if the specified object is a <code>Option</code> object else returns
+ * false.
+ *
+ * @see BusinessValueHolder#isSameAs(BusinessValueHolder)
+ */
+ public boolean isSameAs(final BusinessValueHolder object) {
+ ensureAtLeastPartResolved();
+ if (object instanceof Option) {
+ return ((Option) object).getSelection().equals(getSelection());
+ } else {
+ return false;
+ }
+ }
+
+ public int noOptions() {
+ return options.length;
+ }
+
+ public void parseUserEntry(final String text) throws ValueParseException {
+ setSelection(text);
+ }
+
+ /**
+ * Reset this option so it has the first option selected.
+ *
+ */
+ public void reset() {
+ setSelectionInternal(0, true);
+ }
+
+ public void setSelection(final String selection) {
+ setSelectionInternal(selection, true);
+ }
+
+ public void setSelectionIndex(final int selection) {
+ if ((0 > selection) && (selection >= options.length)) {
+ throw new IllegalArgumentException("Selection value must index one of the available options");
+ }
+
+ setSelectionInternal(selection, true);
+ }
+
+ private void setSelectionInternal(final int selection, final boolean notify) {
+ if (notify) {
+ ensureAtLeastPartResolved();
+ }
+ this.selection = selection;
+ if (notify) {
+ parentChanged();
+ }
+ }
+
+ private void setSelectionInternal(final String selection, final boolean notify) {
+ if (notify) {
+ ensureAtLeastPartResolved();
+ }
+ for (int i = 0; i < options.length; i++) {
+ if (options[i].equalsIgnoreCase(selection)) {
+ this.selection = i;
+
+ break;
+ }
+ }
+ if (notify) {
+ parentChanged();
+ }
+ }
+
+ public String stringValue() {
+ return getSelection();
+ }
+
+ public Title title() {
+ ensureAtLeastPartResolved();
+ return new Title((options == null) ? "none" : ((selection >= 0) ? options[selection] : ""));
+ }
+
+ public boolean hasOption(final String expectedTitle) {
+ for (int i = 0; i < options.length; i++) {
+ if (options[i].equalsIgnoreCase(expectedTitle)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ public void restoreFromEncodedString(final String data) {
+ if (data == null || data.equals("NULL")) {
+ setSelectionInternal(-1, false);
+ } else {
+ setSelectionInternal(data, false);
+ }
+ }
+
+ public String asEncodedString() {
+ return isEmpty() ? "NULL" : getSelection();
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dbb64345/framework/core/applib/src/main/src-archived/old-valueholders/Password.java
----------------------------------------------------------------------
diff --git a/framework/core/applib/src/main/src-archived/old-valueholders/Password.java b/framework/core/applib/src/main/src-archived/old-valueholders/Password.java
new file mode 100644
index 0000000..0314947
--- /dev/null
+++ b/framework/core/applib/src/main/src-archived/old-valueholders/Password.java
@@ -0,0 +1,139 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.isis.application.valueholder;
+
+import org.apache.isis.application.BusinessObject;
+import org.apache.isis.application.Title;
+import org.apache.isis.application.value.ValueParseException;
+
+
+public class Password extends BusinessValueHolder {
+ private static final long serialVersionUID = 1L;
+ private int maximumLength;
+ private String password;
+
+ public Password() {
+ this(null);
+ }
+
+ public Password(final int maximumLength) {
+ this(null, maximumLength);
+ }
+
+ public Password(final BusinessObject parent) {
+ super(parent);
+ password = "";
+ }
+
+ public Password(final BusinessObject parent, final int maximumLength) {
+ this(parent);
+ this.maximumLength = maximumLength;
+ }
+
+ public String asEncodedString() {
+ return isEmpty() ? "NULL" : password;
+ }
+
+ public void clear() {
+ setValuesInternal(null, true);
+ }
+
+ public void copyObject(final BusinessValueHolder object) {
+ if (object == null) {
+ this.clear();
+ } else if (!(object instanceof Password)) {
+ throw new IllegalArgumentException("Can only copy the value of a Password object");
+ } else {
+ setValue(((Password) object).password);
+ }
+ }
+
+ public int getMaximumLength() {
+ return maximumLength;
+ }
+
+ public boolean isEmpty() {
+ ensureAtLeastPartResolved();
+ return password == null;
+ }
+
+ public boolean isSameAs(final BusinessValueHolder object) {
+ ensureAtLeastPartResolved();
+ if (object instanceof Password) {
+ String pswd = ((Password) object).password;
+ if (pswd == null && password == null) {
+ return true;
+ }
+ if (password != null && password.equals(pswd)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public void parseUserEntry(final String text) throws ValueParseException {
+ setValue(text);
+ }
+
+ public void reset() {
+ setValuesInternal(null, true);
+ }
+
+ public void restoreFromEncodedString(final String data) {
+ if (data == null || data.equals("NULL")) {
+ setValuesInternal(null, false);
+ } else {
+ setValuesInternal(data, false);
+ }
+ }
+
+ public void setMaximumLength(final int maximumLength) {
+ this.maximumLength = maximumLength;
+ }
+
+ public void setValue(final String password) {
+ if (password == null) {
+ clear();
+ } else {
+ setValuesInternal(password, false);
+ }
+ }
+
+ private void setValuesInternal(final String value, final boolean notify) {
+ if (notify) {
+ ensureAtLeastPartResolved();
+ }
+ this.password = value;
+ if (notify) {
+ parentChanged();
+ }
+ }
+
+ public String stringValue() {
+ ensureAtLeastPartResolved();
+ return password;
+ }
+
+ public Title title() {
+ ensureAtLeastPartResolved();
+ return new Title(password);
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dbb64345/framework/core/applib/src/main/src-archived/old-valueholders/Percentage.java
----------------------------------------------------------------------
diff --git a/framework/core/applib/src/main/src-archived/old-valueholders/Percentage.java b/framework/core/applib/src/main/src-archived/old-valueholders/Percentage.java
new file mode 100644
index 0000000..3204607
--- /dev/null
+++ b/framework/core/applib/src/main/src-archived/old-valueholders/Percentage.java
@@ -0,0 +1,260 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.isis.application.valueholder;
+
+import org.apache.isis.application.BusinessObject;
+import org.apache.isis.application.Title;
+import org.apache.isis.application.value.ValueParseException;
+
+import java.text.NumberFormat;
+import java.text.ParseException;
+
+
+/**
+ * Value object representing a percentage value.
+ * <p>
+ * NOTE: this class currently does not support about listeners.
+ * </p>
+ */
+public class Percentage extends Magnitude {
+ private static final long serialVersionUID = 1L;
+ private static final NumberFormat PERCENTAGE_FORMAT = NumberFormat.getPercentInstance();
+ private static final NumberFormat DECIMAL_FORMAT = NumberFormat.getNumberInstance();
+ private float value;
+ private boolean isNull;
+
+ public Percentage() {
+ this(null, 0.0f);
+ }
+
+ public Percentage(final float value) {
+ this(null, value);
+ }
+
+ /**
+ * @deprecated
+ */
+ public Percentage(final String text) {
+ super(null);
+ try {
+ parseUserEntry(text);
+ isNull = false;
+ } catch (ValueParseException e) {
+ throw new IllegalArgumentException("Could not parse value: " + text);
+ }
+ }
+
+ public Percentage(final Percentage value) {
+ this(null, value);
+ }
+
+ public Percentage(final BusinessObject parent) {
+ this(parent, 0.0f);
+ }
+
+ public Percentage(final BusinessObject parent, final float value) {
+ super(parent);
+ this.value = value;
+ isNull = false;
+ }
+
+ public Percentage(final BusinessObject parent, final Percentage value) {
+ super(parent);
+ this.isNull = value.isNull;
+ this.value = value.value;
+ }
+
+ public void add(final double value) {
+ setValue((float) (floatValue() + value));
+ }
+
+ public void clear() {
+ setValuesInternal(0F, true, true);
+ }
+
+ /**
+ * Copies the specified object's contained data to this instance. param object the object to copy the data
+ * from
+ */
+ public void copyObject(final BusinessValueHolder object) {
+ if (!(object instanceof Percentage)) {
+ throw new IllegalArgumentException("Can only copy the value of a Percentage object");
+ }
+ setValue((Percentage) object);
+ }
+
+ public void divide(final double value) {
+ setValue((float) (floatValue() / value));
+ }
+
+ /**
+ * Returns this value as an double.
+ */
+ public double doubleValue() {
+ ensureAtLeastPartResolved();
+ return value;
+ }
+
+ public boolean equals(final Object obj) {
+ ensureAtLeastPartResolved();
+ if (this == obj) {
+ return true;
+ }
+ if (!(obj instanceof Percentage)) {
+ return false;
+ }
+ Percentage object = (Percentage) obj;
+ if (object.isEmpty() && isEmpty()) {
+ return true;
+ }
+ return object.value == value;
+ }
+
+ /**
+ * Returns this value as an float.
+ */
+ public float floatValue() {
+ ensureAtLeastPartResolved();
+ return value;
+ }
+
+ public String getObjectHelpText() {
+ return "A floating point number object.";
+ }
+
+ /**
+ * Returns this value as an int.
+ */
+ public int intValue() {
+ ensureAtLeastPartResolved();
+ return (int) value;
+ }
+
+ public boolean isEmpty() {
+ ensureAtLeastPartResolved();
+ return isNull;
+ }
+
+ /**
+ */
+ public boolean isEqualTo(final Magnitude magnitude) {
+ ensureAtLeastPartResolved();
+ if (magnitude instanceof Percentage) {
+ if (isNull) {
+ return magnitude.isEmpty();
+ }
+ return ((Percentage) magnitude).value == value;
+ } else {
+ throw new IllegalArgumentException("Parameter must be of type WholeNumber");
+ }
+ }
+
+ public boolean isLessThan(final Magnitude magnitude) {
+ if (magnitude instanceof Percentage) {
+ return !isEmpty() && !magnitude.isEmpty() && value < ((Percentage) magnitude).value;
+ } else {
+ throw new IllegalArgumentException("Parameter must be of type WholeNumber");
+ }
+ }
+
+ /**
+ * Returns this value as an long.
+ */
+ public long longValue() {
+ ensureAtLeastPartResolved();
+ return (long) value;
+ }
+
+ public void multiply(final double value) {
+ setValue((float) (floatValue() * value));
+ }
+
+ public void parseUserEntry(final String text) throws ValueParseException {
+ if (text.trim().equals("")) {
+ clear();
+ } else {
+ try {
+ setValue(PERCENTAGE_FORMAT.parse(text).floatValue());
+ } catch (ParseException e) {
+ try {
+ setValue(DECIMAL_FORMAT.parse(text).floatValue());
+ } catch (ParseException ee) {
+ throw new ValueParseException("Invalid number; can;t parse '" + text + "'", ee);
+ }
+ }
+ }
+ }
+
+ /**
+ * Reset this percentage so it contains 0%.
+ */
+ public void reset() {
+ setValuesInternal(0F, false, true);
+ }
+
+ public void setValue(final float value) {
+ setValuesInternal(value, false, true);
+ }
+
+ public void setValue(final Percentage value) {
+ setValuesInternal(value.floatValue(), value.isNull, true);
+ }
+
+ private void setValuesInternal(final float value, final boolean isNull, final boolean notify) {
+ if (notify) {
+ ensureAtLeastPartResolved();
+ }
+ this.value = value;
+ this.isNull = isNull;
+ if (notify) {
+ parentChanged();
+ }
+ }
+
+ /**
+ * Returns this value as an short.
+ */
+ public short shortValue() {
+ ensureAtLeastPartResolved();
+ return (short) value;
+ }
+
+ public void subtract(final double value) {
+ add(-value);
+ }
+
+ public Title title() {
+ return new Title(isEmpty() ? "" : PERCENTAGE_FORMAT.format(value));
+ }
+
+ public void restoreFromEncodedString(final String data) {
+ if (data == null || data.equals("NULL")) {
+ setValuesInternal(0F, true, false);
+ } else {
+ setValuesInternal(Float.valueOf(data).floatValue(), false, false);
+ }
+ }
+
+ public String asEncodedString() {
+ return isEmpty() ? "NULL" : String.valueOf(floatValue());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dbb64345/framework/core/applib/src/main/src-archived/old-valueholders/PhoneNumber.java
----------------------------------------------------------------------
diff --git a/framework/core/applib/src/main/src-archived/old-valueholders/PhoneNumber.java b/framework/core/applib/src/main/src-archived/old-valueholders/PhoneNumber.java
new file mode 100644
index 0000000..7558f10
--- /dev/null
+++ b/framework/core/applib/src/main/src-archived/old-valueholders/PhoneNumber.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.isis.applib.value;
+
+import java.io.Serializable;
+
+public class PhoneNumber implements Serializable {
+ private static final long serialVersionUID = 1L;
+ private final String number;
+
+ public PhoneNumber(final String text) {
+ this.number = text;
+ }
+
+ public Object getValue() {
+ return number;
+ }
+
+ public String toString() {
+ return number;
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dbb64345/framework/core/applib/src/main/src-archived/old-valueholders/Quantity.java
----------------------------------------------------------------------
diff --git a/framework/core/applib/src/main/src-archived/old-valueholders/Quantity.java b/framework/core/applib/src/main/src-archived/old-valueholders/Quantity.java
new file mode 100644
index 0000000..35084a6
--- /dev/null
+++ b/framework/core/applib/src/main/src-archived/old-valueholders/Quantity.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.isis.applib.value;
+
+/**
+ * Color is simple numerical representation of a color using the amount of red, green and blue (RGB)
+ * components. Where there is no basic colors (RGB all equal 0) then you get black; where each color is at
+ * maximum (RGB all equal 255) you get white.
+ */
+public class Quantity extends Magnitude {
+ private static final long serialVersionUID = 1L;
+ private final int quantity;
+
+ public Quantity(final int quantity) {
+ if (quantity <= 0) {
+ throw new IllegalArgumentException("Quantity must be positive: " + quantity);
+ }
+ this.quantity = quantity;
+ }
+
+ public int intValue() {
+ return quantity;
+ }
+
+ /**
+ * returns true if the number of this object has the same value as the specified number
+ */
+ public boolean isEqualTo(final Magnitude number) {
+ if (number instanceof Quantity) {
+ return ((Quantity) number).quantity == quantity;
+ } else {
+ throw new IllegalArgumentException("Parameter must be of type Quantity");
+ }
+ }
+
+ /**
+ * Returns true if this value is less than the specified value.
+ */
+ public boolean isLessThan(final Magnitude value) {
+ if (value instanceof Quantity) {
+ return quantity < ((Quantity) value).quantity;
+ } else {
+ throw new IllegalArgumentException("Parameter must be of type Quantity");
+ }
+ }
+
+ public String title() {
+ return Integer.toString(quantity);
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dbb64345/framework/core/applib/src/main/src-archived/old-valueholders/RtfValue.java
----------------------------------------------------------------------
diff --git a/framework/core/applib/src/main/src-archived/old-valueholders/RtfValue.java b/framework/core/applib/src/main/src-archived/old-valueholders/RtfValue.java
new file mode 100644
index 0000000..4d5ad03
--- /dev/null
+++ b/framework/core/applib/src/main/src-archived/old-valueholders/RtfValue.java
@@ -0,0 +1,193 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.isis.application.valueholder;
+
+import org.apache.isis.application.ApplicationException;
+import org.apache.isis.application.BusinessObject;
+import org.apache.isis.application.Title;
+import org.apache.isis.application.value.ValueParseException;
+
+
+/**
+ * <h3>Implementation Notes</h3>
+ *
+ * This is a little risky, but just using <code>data.getBytes("UTF-8")</code>. This perhaps
+ * should be replaced with UUDecoding, or (more fundamentally) the Value interface should change.
+ * <p>
+ * But the above *might* do (haven't tested this out yet), because RTF uses either 7-bit or (for MS Word)
+ * 8-bit character sets and no more. To quote the RTF 1.5 spec:
+ *
+ * <pre>
+ *
+ * An RTF file consists of unformatted text, control words, control symbols, and groups.
+ * For ease of transport, a standard RTF file can consist of only 7-bit ASCII characters.
+ * (Converters that communicate with Microsoft Word for Windows or Microsoft Word for the
+ * Macintosh should expect 8-bit characters.)
+ *
+ * </pre>
+ *
+ * @see #parseUserEntry(String)
+ * @see <a href="http://www.biblioscape.com/rtf15_spec.htm#Heading2">RTF Syntax</a>
+ */
+public class RtfValue extends BusinessValueHolder {
+
+ public RtfValue() {
+ super(null);
+ }
+
+ public RtfValue(final BusinessObject parent) {
+ super(parent);
+ }
+
+ private String utf8Encoded;
+
+ /**
+ * Clears the value so that it is empty, i.e. <code>isEmpty</code> returns <code>true</code>.
+ */
+ public void clear() {
+ setValuesInternal(null, true);
+ }
+
+ /**
+ * Copies the content of the specified object into this object.
+ */
+ public void copyObject(final BusinessValueHolder other) {
+ if (!(other instanceof RtfValue)) {
+ throw new ApplicationException("only support copying from other RTF values");
+ }
+ copyObject((RtfValue) other);
+ }
+
+ public void copyObject(final RtfValue other) {
+ setValue(other.utf8Encoded);
+ }
+
+ /**
+ * if <code>isEmpty()</code> then returns null.
+ */
+ public byte[] getBytes() {
+ ensureAtLeastPartResolved();
+ if (utf8Encoded == null) {
+ return null;
+ }
+ try {
+ return utf8Encoded.getBytes("UTF-8");
+ } catch (java.io.UnsupportedEncodingException ex) {
+ throw new ApplicationException(ex);
+ }
+ }
+
+ /**
+ * Returns true if the value contains no data, e.g. no entry has been made. A call to clear should remove
+ * the value, so this call will then return true.
+ */
+ public boolean isEmpty() {
+ ensureAtLeastPartResolved();
+ return utf8Encoded == null;
+ }
+
+ /**
+ * Checks to see if two objects contain the same information. Compare with <code>equals</code>, which
+ * determines if the one object is replaceable with another.
+ *
+ * @param other
+ * the object to compare
+ * @return true if the objects have the same content, and false if the objects are of different types or
+ * their contents are deemed to be different.
+ */
+ public boolean isSameAs(final BusinessValueHolder other) {
+ ensureAtLeastPartResolved();
+ return other instanceof RtfValue && isSameAs((RtfValue) other);
+ }
+
+ public boolean isSameAs(final RtfValue other) {
+ ensureAtLeastPartResolved();
+ if (utf8Encoded == null && other.utf8Encoded == null)
+ return true;
+ if (utf8Encoded == null || other.utf8Encoded == null)
+ return false;
+ return utf8Encoded.equals(other.utf8Encoded);
+ }
+
+ public void parseUserEntry(final String text) throws ValueParseException {
+ setValue(text);
+ }
+
+ /**
+ * Resets a value to its default value. Since for a RTF there is no default, does the same as the
+ * <code>clear</code> method.
+ */
+ public void reset() {
+ setValue("");
+ }
+
+ /**
+ * Takes a storage string and uses it reinstate this value object to its previous state.
+ *
+ */
+ public void restoreFromEncodedString(final String utf8Encoded) {
+ if (utf8Encoded == null || utf8Encoded.equals("NULL")) {
+ setValuesInternal(null, false);
+ } else {
+ setValuesInternal(utf8Encoded, false);
+ }
+ }
+
+ /**
+ * Returns a basic string representation of this value for storage purposes.
+ *
+ * @see #restoreFromEncodedString(String)
+ */
+ public String asEncodedString() {
+ return isEmpty() ? "NULL" : utf8Encoded;
+ }
+
+ public void setValue(final String value) {
+ setValuesInternal(value, true);
+ }
+
+ private void setValuesInternal(final String value, final boolean notify) {
+ if (notify) {
+ ensureAtLeastPartResolved();
+ }
+ this.utf8Encoded = value;
+ if (notify) {
+ parentChanged();
+ }
+ }
+
+ public Title title() {
+ return new Title(titleString());
+ }
+
+ public String titleString() {
+ ensureAtLeastPartResolved();
+ return (utf8Encoded != null ? "not " : "") + "empty";
+ }
+
+ /**
+ * Determines if the user can change this type of object: no in the case of RtfValues.
+ */
+ public boolean userChangeable() {
+ return false;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dbb64345/framework/core/applib/src/main/src-archived/old-valueholders/SerialNumber.java
----------------------------------------------------------------------
diff --git a/framework/core/applib/src/main/src-archived/old-valueholders/SerialNumber.java b/framework/core/applib/src/main/src-archived/old-valueholders/SerialNumber.java
new file mode 100644
index 0000000..ffcbb3a
--- /dev/null
+++ b/framework/core/applib/src/main/src-archived/old-valueholders/SerialNumber.java
@@ -0,0 +1,155 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.isis.application.valueholder;
+
+import org.apache.isis.application.BusinessObject;
+import org.apache.isis.application.Title;
+import org.apache.isis.application.value.ValueParseException;
+
+import java.text.NumberFormat;
+import java.text.ParseException;
+
+
+public class SerialNumber extends Magnitude {
+ private static final NumberFormat FORMAT = NumberFormat.getNumberInstance();
+ private boolean isNull;
+ private long number;
+
+ public SerialNumber() {
+ this(null);
+ }
+
+ public SerialNumber(final BusinessObject parent) {
+ super(parent);
+ }
+
+ public void clear() {
+ setValuesInternal(0, true, true);
+ }
+
+ public void copyObject(final BusinessValueHolder object) {
+ if (!(object instanceof SerialNumber)) {
+ throw new IllegalArgumentException("Can only copy the value of a WholeNumber object");
+ }
+ SerialNumber number = (SerialNumber) object;
+ setValue(number);
+ }
+
+ public boolean isEmpty() {
+ ensureAtLeastPartResolved();
+ return isNull;
+ }
+
+ /**
+ * returns true if the number of this object has the same value as the specified number
+ */
+ public boolean isEqualTo(final Magnitude value) {
+ ensureAtLeastPartResolved();
+ if (value instanceof SerialNumber) {
+ if (isNull) {
+ return value.isEmpty();
+ }
+ return ((SerialNumber) value).number == number;
+ } else {
+ throw new IllegalArgumentException("Parameter must be of type WholeNumber");
+ }
+ }
+
+ /**
+ * Returns true if this value is less than the specified value.
+ */
+ public boolean isLessThan(final Magnitude value) {
+ ensureAtLeastPartResolved();
+ if (value instanceof SerialNumber) {
+ return !isNull && !value.isEmpty() && number < ((SerialNumber) value).number;
+ } else {
+ throw new IllegalArgumentException("Parameter must be of type WholeNumber");
+ }
+ }
+
+ public long longValue() {
+ ensureAtLeastPartResolved();
+ return (long) number;
+ }
+
+ public void parseUserEntry(final String text) throws ValueParseException {
+ if (text.trim().equals("")) {
+ clear();
+ } else {
+ try {
+ setValue(FORMAT.parse(text).longValue());
+ } catch (ParseException e) {
+ throw new ValueParseException("Invalid number", e);
+ }
+ }
+ }
+
+ /**
+ * Reset this whole number so it contains 0.
+ *
+ *
+ */
+ public void reset() {
+ setValue(0);
+ }
+
+ public void restoreFromEncodedString(final String data) {
+ if (data == null || data.equals(("NULL"))) {
+ setValuesInternal(0, true, false);
+ } else {
+ setValuesInternal(Integer.valueOf(data).intValue(), false, false);
+ }
+ }
+
+ public String asEncodedString() {
+ return isEmpty() ? "NULL" : String.valueOf(longValue());
+ }
+
+ public void setValue(final long number) {
+ setValuesInternal(number, false, true);
+ }
+
+ public void setValue(final SerialNumber number) {
+ setValuesInternal(number.number, number.isNull, true);
+ }
+
+ private void setValuesInternal(final long number, final boolean isNull, final boolean notify) {
+ if (notify) {
+ ensureAtLeastPartResolved();
+ }
+ this.number = number;
+ this.isNull = isNull;
+ if (notify) {
+ parentChanged();
+ }
+ }
+
+ public Title title() {
+ ensureAtLeastPartResolved();
+ return new Title(isNull ? "" : String.valueOf(number));
+ }
+
+ public void next() {
+ ensureAtLeastPartResolved();
+ number++;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dbb64345/framework/core/applib/src/main/src-archived/old-valueholders/SimpleState.java
----------------------------------------------------------------------
diff --git a/framework/core/applib/src/main/src-archived/old-valueholders/SimpleState.java b/framework/core/applib/src/main/src-archived/old-valueholders/SimpleState.java
new file mode 100644
index 0000000..4f6eb96
--- /dev/null
+++ b/framework/core/applib/src/main/src-archived/old-valueholders/SimpleState.java
@@ -0,0 +1,186 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.isis.application.valueholder;
+
+import org.apache.isis.application.ApplicationException;
+import org.apache.isis.application.BusinessObject;
+import org.apache.isis.application.Title;
+import org.apache.isis.application.control.State;
+import org.apache.isis.application.value.ValueParseException;
+
+
+public class SimpleState extends BusinessValueHolder implements State {
+ private static final long serialVersionUID = 1L;
+ private String name;
+ private int id;
+ private State[] states;
+
+ public SimpleState(final int id, final String name) {
+ this(null, id, name);
+ }
+
+ public SimpleState(final State[] states) {
+ this(null, states);
+ }
+
+ public SimpleState(final BusinessObject parent, final int id, final String name) {
+ super(parent);
+ if (id < 0) {
+ throw new IllegalArgumentException("Id must be 0 or greater");
+ }
+
+ this.id = id;
+ this.name = name;
+ }
+
+ public SimpleState(final BusinessObject parent, final State[] states) {
+ super(parent);
+ this.states = states;
+ }
+
+ public String getName() {
+ ensureAtLeastPartResolved();
+ return name;
+ }
+
+ public Object getValue() {
+ ensureAtLeastPartResolved();
+ return this;
+ }
+
+ public boolean userChangeable() {
+ return false;
+ }
+
+ public void clear() {
+ id = -1;
+ name = null;
+ parentChanged();
+ }
+
+ public void parseUserEntry(final String text) throws ValueParseException {
+ setState(text, true);
+ }
+
+ public void reset() {
+ id = -1;
+ name = null;
+ parentChanged();
+ }
+
+ public void restoreFromEncodedString(final String data) {
+ id = Integer.valueOf(data).intValue();
+ name = "unmatched state";
+ for (int i = 0; i < states.length; i++) {
+ if (id == ((SimpleState) states[i]).id) {
+ name = ((SimpleState) states[i]).name;
+ break;
+ }
+ }
+ }
+
+ public void setValue(final String stateName) {
+ if ((stateName == null)) {
+ this.clear();
+ } else {
+ setState(stateName, true);
+ }
+ }
+
+ private void setState(final String stateName, final boolean notify) {
+
+ if (this.states == null) {
+ return;
+ }
+ for (int i = 0; i < states.length; i++) {
+ SimpleState state = (SimpleState) states[i];
+ if (state.name.equals(stateName)) {
+ setValuesInternal(state.id, state.name, notify);
+ return;
+ }
+ }
+ }
+
+ private void setValuesInternal(final int id, final String name, final boolean notify) {
+
+ if (notify) {
+ ensureAtLeastPartResolved();
+ }
+ this.id = id; // -1 means null.
+ this.name = name;
+ if (notify) {
+ parentChanged();
+ }
+ }
+
+ public String asEncodedString() {
+ ensureAtLeastPartResolved();
+ return String.valueOf(id);
+ }
+
+ public void copyObject(final BusinessValueHolder object) {
+ throw new ApplicationException();
+ }
+
+ public boolean isEmpty() {
+ ensureAtLeastPartResolved();
+ return id == -1;
+ }
+
+ public boolean equals(final Object object) {
+ ensureAtLeastPartResolved();
+ if (object instanceof SimpleState) {
+ int cid = ((SimpleState) object).id;
+ if (cid == id) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public boolean isSameAs(final BusinessValueHolder object) {
+ ensureAtLeastPartResolved();
+ if (object instanceof SimpleState) {
+ int cid = ((SimpleState) object).id;
+ if (cid == id) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * copies the state across from the specified state
+ */
+ public void changeTo(final State state) {
+ SimpleState ss = (SimpleState) state;
+ setValuesInternal(ss.id, ss.name, true);
+ }
+
+ public String titleString() {
+ ensureAtLeastPartResolved();
+ return name;
+ }
+
+ public Title title() {
+ return new Title(titleString());
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dbb64345/framework/core/applib/src/main/src-archived/old-valueholders/TestClock.java
----------------------------------------------------------------------
diff --git a/framework/core/applib/src/main/src-archived/old-valueholders/TestClock.java b/framework/core/applib/src/main/src-archived/old-valueholders/TestClock.java
new file mode 100644
index 0000000..a2e8a39
--- /dev/null
+++ b/framework/core/applib/src/main/src-archived/old-valueholders/TestClock.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.isis.application.system;
+
+import org.apache.isis.application.Clock;
+import org.apache.isis.application.valueholder.Date;
+import org.apache.isis.application.valueholder.DateTime;
+import org.apache.isis.application.valueholder.Time;
+import org.apache.isis.application.valueholder.TimeStamp;
+
+import java.util.Calendar;
+import java.util.Locale;
+import java.util.TimeZone;
+
+
+public class TestClock implements Clock {
+ private static final TimeZone timeZone;
+ static {
+ timeZone = TimeZone.getTimeZone("GMT");
+ Locale.setDefault(Locale.UK);
+ }
+
+ public TestClock() {
+ Date.setClock(this);
+ Time.setClock(this);
+ DateTime.setClock(this);
+ TimeStamp.setClock(this);
+ }
+
+ /**
+ * Always return the time as 2003/8/17 21:30:25
+ */
+ public long getTime() {
+ Calendar c = Calendar.getInstance();
+ c.setTimeZone(timeZone);
+
+ c.set(Calendar.MILLISECOND, 0);
+
+ c.set(Calendar.YEAR, 2003);
+ c.set(Calendar.MONTH, 7);
+ c.set(Calendar.DAY_OF_MONTH, 17);
+
+ c.set(Calendar.HOUR_OF_DAY, 21);
+ c.set(Calendar.MINUTE, 30);
+ c.set(Calendar.SECOND, 25);
+
+ return c.getTime().getTime();
+ }
+
+}