summaryrefslogtreecommitdiffstats
path: root/sandbox/slaws/bank-challenge/common-contribution/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/slaws/bank-challenge/common-contribution/src/main')
-rw-r--r--sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/BankService.java40
-rw-r--r--sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/ChallengeControl.java32
-rw-r--r--sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/Statement.java143
-rw-r--r--sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/StockHolding.java58
-rw-r--r--sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/StockQuote.java52
-rw-r--r--sandbox/slaws/bank-challenge/common-contribution/src/main/resources/META-INF/sca-contribution.xml23
6 files changed, 348 insertions, 0 deletions
diff --git a/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/BankService.java b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/BankService.java
new file mode 100644
index 0000000000..bc13dfd21d
--- /dev/null
+++ b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/BankService.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 bank;
+
+import java.util.List;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+/**
+ * The Bank service interface.
+ */
+@Remotable
+public interface BankService {
+
+ String createAccount(String customerName);
+
+ Statement getStatement(String accountID);
+
+ void buyEquity(String accountID, String equityCode, int number);
+ void sellEquity(String accountID, String equityCode, int number);
+
+ StockQuote getStockQuote(String accountID, String equityCode);
+ List<StockQuote> getAllStockQuotes(String accountID);
+}
diff --git a/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/ChallengeControl.java b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/ChallengeControl.java
new file mode 100644
index 0000000000..c03f9a2c9c
--- /dev/null
+++ b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/ChallengeControl.java
@@ -0,0 +1,32 @@
+/*
+ * 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 bank;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+/**
+ * The Bank service interface.
+ */
+@Remotable
+public interface ChallengeControl {
+
+ void start();
+ void increment();
+ void stop();
+}
diff --git a/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/Statement.java b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/Statement.java
new file mode 100644
index 0000000000..97439736e1
--- /dev/null
+++ b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/Statement.java
@@ -0,0 +1,143 @@
+/*
+ * 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 bank;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+
+/**
+ * A stock quote
+ */
+public class Statement implements Serializable {
+
+ private String customerName;
+ private String accountID;
+ private long cashBalance;
+ private List<StockHolding> stockHoldings;
+ private List<String> transactions = new ArrayList<String>();
+
+ public Statement(){
+ if (this.stockHoldings == null){
+ this.stockHoldings = new ArrayList<StockHolding>();
+ }
+ }
+
+ public Statement(String customerName, String accountID, long cashBalance, List<StockHolding> stockHoldings){
+ this.customerName = customerName;
+ this.accountID = accountID;
+ this.cashBalance = cashBalance;
+ this.stockHoldings = stockHoldings;
+
+ if (this.accountID == null){
+ this.accountID = UUID.randomUUID().toString();
+ }
+
+ if (this.stockHoldings == null){
+ this.stockHoldings = new ArrayList<StockHolding>();
+ }
+ }
+
+ public String getCustomerName() {
+ return customerName;
+ }
+
+ public String getAccountID() {
+ return accountID;
+ }
+
+ public long getCashBalance() {
+ return cashBalance;
+ }
+
+ public void creditCashBalance(long credit, String reason) {
+ this.cashBalance += credit;
+ transactions.add("credit " + credit + " : " + reason);
+ }
+
+ public void debitCashBalance(long debit, String reason) {
+ this.cashBalance -= debit;
+ transactions.add("debit " + debit + " : " + reason);
+ }
+
+ public List<StockHolding> getStockHolding() {
+ return stockHoldings;
+ }
+
+ public void creditStockHolding(StockHolding stock){
+ stockHoldings.add(stock);
+ debitCashBalance(stock.getPrice() * stock.getNumberHeld(),
+ "bought " + stock.getNumberHeld() + " of " + stock.getStockCode() + " at " + stock.getPrice());
+ }
+
+ public void debitStockHolding(StockHolding stock){
+ int numberToSell = stock.getNumberHeld();
+ int numberSold = 0;
+ List<StockHolding> toRemove = new ArrayList<StockHolding>();
+
+ for (StockHolding stockHolding : stockHoldings){
+ if (stockHolding.getStockCode().equals(stock.getStockCode())){
+ if (stockHolding.getNumberHeld() > numberToSell){
+ stockHolding.setNumberHeld(stockHolding.getNumberHeld() - numberToSell);
+ numberSold += numberToSell;
+ numberToSell = 0;
+ break;
+ } else {
+ numberSold += stockHolding.getNumberHeld();
+ numberToSell -= stockHolding.getNumberHeld();
+ stockHolding.setNumberHeld(0);
+ toRemove.add(stockHolding);
+ }
+ }
+ }
+
+ stockHoldings.removeAll(toRemove);
+
+ creditCashBalance(stock.getPrice() * numberSold,
+ "sold " + numberSold + " of " + stock.getStockCode() + " at " + stock.getPrice());
+ }
+
+ public List<String> getTransactions() {
+ return transactions;
+ }
+
+ @Override
+ public String toString() {
+ String returnString =
+ "customer name = " + customerName +
+ "\naccount Id = " + accountID +
+ "\nbalance = " + cashBalance +
+ "\nequities = \n";
+
+ for (StockHolding stock : stockHoldings){
+ returnString += " stock " + stock.getStockCode() + " number held = " + stock.getNumberHeld() + "\n";
+ }
+
+ returnString +=
+ "transactions = \n";
+
+ for(String transaction : transactions){
+ returnString += " " + transaction + "\n";
+ }
+
+ return returnString;
+ }
+}
diff --git a/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/StockHolding.java b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/StockHolding.java
new file mode 100644
index 0000000000..8bd0afd2be
--- /dev/null
+++ b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/StockHolding.java
@@ -0,0 +1,58 @@
+/*
+ * 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 bank;
+
+import java.io.Serializable;
+
+/**
+ * A stock quote
+ */
+public class StockHolding implements Serializable {
+
+ private String stockCode;
+ private int numberHeld;
+ private long price;
+
+ public StockHolding(String stockCode, int numberHeld, long price){
+ this.stockCode = stockCode;
+ this.numberHeld = numberHeld;
+ this.price = price;
+ }
+
+ public String getStockCode() {
+ return stockCode;
+ }
+
+ public int getNumberHeld() {
+ return numberHeld;
+ }
+
+ public void setNumberHeld(int numberHeld) {
+ this.numberHeld = numberHeld;
+ }
+
+ public long getPrice() {
+ return price;
+ }
+
+ @Override
+ public String toString() {
+ return stockCode + " - number=" + numberHeld + " - price=" + price;
+ }
+}
diff --git a/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/StockQuote.java b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/StockQuote.java
new file mode 100644
index 0000000000..3bec8019b7
--- /dev/null
+++ b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/StockQuote.java
@@ -0,0 +1,52 @@
+/*
+ * 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 bank;
+
+import java.io.Serializable;
+
+/**
+ * A stock quote
+ */
+public class StockQuote implements Serializable {
+
+ private String stockCode;
+ private long stockQuote;
+
+ public StockQuote(String stockCode, long stockQuote){
+ this.stockCode = stockCode;
+ this.stockQuote = stockQuote;
+ }
+
+ public String getStockCode() {
+ return stockCode;
+ }
+
+ public long getStockQuote() {
+ return stockQuote;
+ }
+
+ public void setStockQuote(long stockQuote) {
+ this.stockQuote = stockQuote;
+ }
+
+ @Override
+ public String toString() {
+ return stockCode + " - " + stockQuote;
+ }
+}
diff --git a/sandbox/slaws/bank-challenge/common-contribution/src/main/resources/META-INF/sca-contribution.xml b/sandbox/slaws/bank-challenge/common-contribution/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..d96d586130
--- /dev/null
+++ b/sandbox/slaws/bank-challenge/common-contribution/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:sample="http://banking-challenge">
+ <export.java package="bank"/>
+</contribution> \ No newline at end of file