Update of /cvsroot/neuclear/neuclear-pay/src/java/org/neuclear/asset/orders
In directory sc8-pr-cvs1:/tmp/cvs-serv12929/src/java/org/neuclear/asset/orders
Modified Files:
TransferGlobals.java TransferOrder.java
Added Files:
Amount.java SerialNumbers.java Value.java
Log Message:
Completed all the builders and contracts.
Added a new abstract Value class to contain either an amount or a list of serial numbers.
Now ready to finish off the AssetControllers.
--- NEW FILE: Amount.java ---
package org.neuclear.asset.orders;
/**
* Created by IntelliJ IDEA.
* User: pelleb
* Date: Jan 12, 2004
* Time: 4:44:24 PM
* To change this template use Options | File Templates.
*/
public final class Amount extends Value {
public Amount(double amount){
this.amount=amount;
}
public double getAmount() {
return amount;
}
private final double amount;
}
--- NEW FILE: SerialNumbers.java ---
package org.neuclear.asset.orders;
import org.neuclear.exchange.orders.ExchangeOrder;
/**
* Created by IntelliJ IDEA.
* User: pelleb
* Date: Jan 12, 2004
* Time: 4:46:51 PM
* To change this template use Options | File Templates.
*/
public final class SerialNumbers extends Value{
public SerialNumbers(String[] src) {
numbers= new String[src.length];
for (int i=0;i<src.length;i++)
numbers[i]=src[i];
}
public double getAmount() {
return numbers.length; //To change body of implemented methods use Options | File Templates.
}
public String getNumber(int i){
return numbers[i];
}
private final String numbers[];
}
--- NEW FILE: Value.java ---
package org.neuclear.asset.orders;
/**
* Created by IntelliJ IDEA.
* User: pelleb
* Date: Jan 12, 2004
* Time: 4:43:12 PM
* To change this template use Options | File Templates.
*/
public abstract class Value {
Value(){
;
}
public abstract double getAmount();
}
Index: TransferGlobals.java
===================================================================
RCS file: /cvsroot/neuclear/neuclear-pay/src/java/org/neuclear/asset/orders/TransferGlobals.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** TransferGlobals.java 11 Jan 2004 00:39:06 -0000 1.4
--- TransferGlobals.java 12 Jan 2004 22:39:14 -0000 1.5
***************
*** 3,6 ****
--- 3,7 ----
import org.dom4j.*;
import org.neuclear.asset.contracts.Asset;
+ import org.neuclear.asset.InvalidTransferException;
import org.neuclear.commons.Utility;
import org.neuclear.commons.time.TimeTools;
***************
*** 14,17 ****
--- 15,19 ----
import java.sql.Timestamp;
import java.text.ParseException;
+ import java.util.StringTokenizer;
/*
***************
*** 35,38 ****
--- 37,45 ----
$Id$
$Log$
+ Revision 1.5 2004/01/12 22:39:14 pelle
+ Completed all the builders and contracts.
+ Added a new abstract Value class to contain either an amount or a list of serial numbers.
+ Now ready to finish off the AssetControllers.
+
Revision 1.4 2004/01/11 00:39:06 pelle
Cleaned up the schemas even more they now all verifiy.
***************
*** 215,226 ****
}
! public static final double parseAmountTag(Element elem) throws InvalidNamedObjectException {
final String amount=getElementValue(elem,AMOUNT_TAG);
try {
! return Double.parseDouble(amount);
} catch (NumberFormatException e) {
throw new InvalidNamedObjectException("Badly formatted number",e);
}
}
public static final SignedNamedObject parseEmbedded(Element elem,QName name) throws InvalidNamedObjectException {
Element embedded=elem.element(name);
--- 222,262 ----
}
! public static final Value parseValueTag(Element elem) throws InvalidNamedObjectException {
! if (elem.elements(createQName(AMOUNT_TAG))!=null)
! return parseAmountTag(elem);
! else
! return parseSerialNumbers(elem);
!
! }
!
! private static SerialNumbers parseSerialNumbers(Element elem) throws InvalidNamedObjectException {
! final String numbers=getElementValue(elem,SERIAL_NOS_TAG);
! return new SerialNumbers(numbers.split("\\s*"));
! }
!
! private static Amount parseAmountTag(Element elem) throws InvalidNamedObjectException {
final String amount=getElementValue(elem,AMOUNT_TAG);
+
try {
! return new Amount(Double.parseDouble(amount));
} catch (NumberFormatException e) {
throw new InvalidNamedObjectException("Badly formatted number",e);
}
}
+
+ public static Element createValueTag(Value value) throws InvalidTransferException {
+ if (value instanceof Amount){
+ return createElement(TransferGlobals.AMOUNT_TAG,Double.toString(value.getAmount()));
+ }
+ SerialNumbers nos=((SerialNumbers)value);
+ if (value.getAmount()>0) {
+ final StringBuffer buf=new StringBuffer((int) (nos.getAmount()*(nos.getNumber(0).length())+1));
+ for (int i=0;i<nos.getAmount();i++)
+ buf.append(nos.getNumber(i));
+ buf.append("\n");
+ return createElement(TransferGlobals.SERIAL_NOS_TAG,buf.toString());
+ }
+ throw new InvalidTransferException("Cant have an empty list");
+ }
public static final SignedNamedObject parseEmbedded(Element elem,QName name) throws InvalidNamedObjectException {
Element embedded=elem.element(name);
***************
*** 245,248 ****
--- 281,285 ----
public static final String ASSET_TAG="Asset";
public static final String AMOUNT_TAG="Amount";
+ public static final String SERIAL_NOS_TAG="SerialNumbers";
public static final String RECIPIENT_TAG = "Recipient";
}
Index: TransferOrder.java
===================================================================
RCS file: /cvsroot/neuclear/neuclear-pay/src/java/org/neuclear/asset/orders/TransferOrder.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** TransferOrder.java 11 Jan 2004 00:39:06 -0000 1.3
--- TransferOrder.java 12 Jan 2004 22:39:14 -0000 1.4
***************
*** 13,17 ****
public final class TransferOrder extends AssetTransactionContract {
! private TransferOrder(final SignedNamedCore core, final Asset asset, final Identity recipient, final double amount, final String comment) {
super(core, asset);
this.amount = amount;
--- 13,17 ----
public final class TransferOrder extends AssetTransactionContract {
! private TransferOrder(final SignedNamedCore core, final Asset asset, final Identity recipient, final Value amount, final String comment) {
super(core, asset);
this.amount = amount;
***************
*** 23,27 ****
return recipient;
}
! public final double getAmount() {
return amount;
}
--- 23,27 ----
return recipient;
}
! public final Value getAmount() {
return amount;
}
***************
*** 33,37 ****
private final Identity recipient;
! private final double amount;
private final String comment;
--- 33,37 ----
private final Identity recipient;
! private final Value amount;
private final String comment;
***************
*** 52,56 ****
TransferGlobals.parseAssetTag(elem),
TransferGlobals.parseRecipientTag(elem),
! TransferGlobals.parseAmountTag(elem),
TransferGlobals.getCommentElement(elem)
);
--- 52,56 ----
TransferGlobals.parseAssetTag(elem),
TransferGlobals.parseRecipientTag(elem),
! TransferGlobals.parseValueTag(elem),
TransferGlobals.getCommentElement(elem)
);
|