/**
* 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 corba.server;
import java.util.HashMap;
import java.util.Map;
import org.omg.PortableServer.POA;
import corba.common.Account;
import corba.common.AccountHelper;
import corba.common.BankPOA;
public class BankImpl extends BankPOA {
private POA poa_;
private Map<String, Account> accountList;
BankImpl(POA poa) {
poa_ = poa;
accountList = new HashMap<>();
}
public Account create_account(String accountName) {
if (accountList.containsKey(accountName)) {
return accountList.get(accountName);
}
System.out.println("[Bank] Called create_account( " + accountName + " )...");
System.out.println();
AccountImpl accountImpl = new AccountImpl(poa_);
String name = "Account-" + accountName;
byte[] oid = name.getBytes();
try {
poa_.activate_object_with_id(oid, accountImpl);
} catch (Exception ex) {
//Ignore
}
org.omg.CORBA.Object obj = poa_.create_reference_with_id(oid, AccountHelper.id());
Account account = AccountHelper.narrow(obj);
accountList.put(accountName, account);
return account;
}
public org.omg.CORBA.Object create_epr_account(String accountName) {
System.out.println("[Bank] Called create_epr_account( " + accountName + ")...");
System.out.println();
/*Account_impl accountImpl = new Account_impl(poa_);
Account account = accountImpl._this(orb_);
accountList.put(account_name, account);*/
AccountImpl accountImpl = new AccountImpl(poa_);
String name = "Account-" + accountName;
byte[] oid = name.getBytes();
try {
poa_.activate_object_with_id(oid, accountImpl);
} catch (Exception ex) {
//Ignore
}
org.omg.CORBA.Object obj = poa_.create_reference_with_id(oid, AccountHelper.id());
Account account = AccountHelper.narrow(obj);
accountList.put(accountName, account);
return account;
}
public Account get_account(String accountName) {
System.out.println("[Bank] Called get_account( " + accountName + ")...");
System.out.println();
return accountList.get(accountName);
}
public org.omg.CORBA.Object get_epr_account(String accountName) {
System.out.println("[Bank] Called get_epr_account( " + accountName + ")...");
System.out.println();
return accountList.get(accountName);
}
// TODO: What is the correct implementation for this operation?
public org.omg.CORBA.Object get_account_epr_with_no_use_attribute(String accountName) {
System.out.println("[Bank] Called get_epr_with_no_use_attribute( " + accountName + " )...");
System.out.println();
return null;
}
// TODO: What is the correct implementation for this operation?
public void find_account(org.omg.CORBA.AnyHolder accountDetails) {
System.out.println("[Bank] Called find_account (account_details)...");
System.out.println();
}
public void remove_account(String accountName) {
System.out.println("[Bank] Called remove_account ( " + accountName + ")...");
System.out.println();
accountList.remove(accountName);
}
public POA _default_POA() {
return poa_;
}
}