Varlık Yönetimi;
- kuruma ait taşınır ve/veya taşınmaz tüm varlıkların tanımlandığı
- bu varlıklara ait hareketlerin kaydedildiği
- amortisman değerleme işlemlerinin yapıldığı
bölümdür. Detaylı bilgi için j-Platform varlık yönetimini inceleyiniz.
Örnek : Varlık Hareketleri Ekranı
DataExchange Web Servisi
package com.lbs.ws.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import java.io.IOException;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.callback.UnsupportedCallbackException;
import org.apache.axis2.AxisFault;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.ConfigurationContextFactory;
import org.apache.rampart.handler.WSSHandlerConstants;
import org.apache.rampart.handler.config.OutflowConfiguration;
import org.apache.ws.security.WSPasswordCallback;
import org.junit.Before;
import org.junit.Test;
import com.lbs.util.LbsFileUtil;
import com.lbs.util.TestGlobal;
import com.lbs.ws.de.DataExchangeServiceStub;
import com.lbs.ws.de.Describe;
import com.lbs.ws.de.DescribeResponse;
import com.lbs.ws.de.GetByKey;
import com.lbs.ws.de.GetByKeyResponse;
import com.lbs.ws.de.RemoveByKey;
import com.lbs.ws.de.RemoveByKeyResponse;
import com.lbs.ws.de.Save;
import com.lbs.ws.de.SaveResponse;
import com.lbs.ws.de.xsd.DescribeParameters;
import com.lbs.ws.de.xsd.ExchangeParameters;
import com.lbs.ws.de.xsd.ExportParameters;
import com.lbs.ws.de.xsd.ImportParameters;
/**
*
* This file includes unit test cases of j-guar dataExchange Web Services. <br>
* required library<br>
* 1- axis2 xxx<br>
* 2- rampart xxx<br>
*
*
* Önceden belirlenmiş iş nesneleri için DataExchangeWS metodları test edilecektir.
*
* Önemli Linkler :
* güvenlik modülü olarak rampart kullanılıyor. İlgili detay bilgiler
* https://axis.apache.org/axis2/java/rampart/developer-guide.html
*
* TODO : OutflowConfiguration replacement ine bakılacak.
*
* @author Servet.Karabas, Devanshu.Bawa
*
*/
public class DataExchangeWSTest implements CallbackHandler {
String workingDir = null;
DataExchangeServiceStub stub = null;
ConfigurationContext ctx = null;
DescribeResponse describeResp = null; // TODO : her bir BO için farklı
// olmalı save metodunda
// kullanılıyor. Yada başka bir
// çözüm bulunacak.
int savedPrimaryKey = 0;
/**
* rampart and rahas modules have to be deployed in modules directory. <br>
* Module directory must be in the resource directory<br>
* modules_directory_path must be given without modules<br>
* createConfigurationContextFromFileSystem(modules_directory_path,
* axis2.xml)<br>
*
* to get more info :<br>
* {@link http://wso2.com/library/3415/} <br>
* <br>
*
* {@link http://wso2.com/library/585/}<br>
* <br>
* <br>
* projenin resource dizini altına modules dizini açılıp rampart and rahas
* .mar dosyaları kopyalanır.<br>
* createConfigurationContextFromFileSystem(...,...) de ilk parametresi
* olarak modules yazılmadan verilir.
*/
@Before
public void setup() {
try {
workingDir = System.getProperty("user.dir");
ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(workingDir
+ "\\res", null);
stub = new DataExchangeServiceStub(ctx, TestGlobal.m_RootURL
+ "DataExchangeService");
ServiceClient client = stub._getServiceClient();
/*Rampart is deployed as a module in Axis2, in the security phase.*/
client.engageModule("rampart");
client.engageModule("addressing");
OutflowConfiguration outflowConfig = new OutflowConfiguration();
outflowConfig.setActionItems("UsernameToken");
outflowConfig.setUser(TestGlobal.userName);
outflowConfig.setPasswordCallbackClass(this.getClass().getName());
stub._getServiceClient()
.getOptions()
.setProperty(WSSHandlerConstants.OUTFLOW_SECURITY,
outflowConfig.getProperty());
stub._setServiceClient(client);
} catch (AxisFault e) {
e.printStackTrace();
}
}
/**
*
* Bu testte aşağıdaki nesneler için describe metodu çalıştırılacaktır.
* "MMXOItem",
* "LOXOInvoice",
* "LOXODispatch",
* "LOXOInvoice",
*
* <p>Bu metod bir nesneye ait dtd ve xml tanımlarının nasıl olduğunu öğrenmek
* için kullanılır. Bu metoda nelerin açıklanması istendiğini belirten
* açıklama ayarları yollanır. Metod açıklanması istenen her seyi açıklayan
* bir nesne döner.
*
*
* - Fatura - irsaliye - Sipariş - Muhasebe Fişi
*
* @return DescribeResponse
* @throws Exception
*/
@Test
public void testaDescribe() throws Exception {
try {
if (stub == null) {
setup();
}
Describe desc = new Describe();
DescribeParameters inputParams = new DescribeParameters();
inputParams.setInitRequiredXML(true);
inputParams.setSecKeyXML(true);
inputParams.setFirm(TestGlobal.firm);
inputParams.setLanguage(TestGlobal.lang);
inputParams.setDescriptive(true);
inputParams.setPeriod(TestGlobal.period);
for (String boname : TestGlobal.boExchangeNames) {
inputParams.setBoName(boname);
desc.setParameters(inputParams);
describeResp = stub.describe(desc);
assertEquals(true, describeResp.get_return().getSuccessful());
System.out.println("DataExchangeWD Describe" + boname
+ "response KeyXML : \n"
+ describeResp.get_return().getSecKeyXML());
break;
}
} catch (Exception ex) {
ex.printStackTrace();
fail(ex.getMessage());
}
}
/**
* <b>Aşağıdaki iş nesneleri için çalıştırılacak.</b>
* <br>"MMXOItem",
* <br>"LOXOInvoice",
* <br>"LOXODispatch",
* <br>"LOXOInvoice",
*
* <p>Bu metod bir nesneyi kaydetmek için kullanılır. Metoda nesne kaydetme ayarları ve nesne xml tanımı yollanır.
* Bu metod verilen xml'deki nesneyi olustusturur ve xml'de nesne için hangi kaydetme islemi hedefleniyorsa ona göre davranır.
* xml içinde nesne için su olasılıklar tanımlanabilr: "nesneyi yarat", "varolan nesneyi güncelle", "nesneyi sil".
* Bu tanımların her biri için metod ayrı bir yöntem izler. Eğer "nesneyi yarat" seçeneği belirtildiyse, eğer nesne veri tabanında yoksa
* yeni nesne kaydedilir; nesne veri tabanında varsa nesne kaydetme ayarlarındaki islem uygulanır. Bu durum için 3 olasılık vardır:
* "nesneyi yeni kaydetmeye zorla", "varolan nesneyi güncelle", "islem yapma".
*
* <p>Nesneyi kaydetmeye zorla durumunda veri tabanında bulunan nesne silinir ve verilen nesne yeni olarak kaydedilir.
* Varolan nesneyi güncelle durumunda varolan nesne güncellenir.
* İslem yapma durumunda ise bu nesne veri tabanında olduğu haliyle bırakılır, islem yapılmaz.
*
* <p>Metoda yollanan nesne için xml'de güncelleme seçeneği seçildiyse, bu durumda nesne xml tanımındaki bilgiler kullanılarak
* veri tabanından okunmaya çalısılır. Eğer nesne veri tabanında varsa ve okuma basarılı olduysa xml tanımında belirtilen
* tüm özellikler veri tabanı özelliklerinin ezecek sekilde nesne güncellenir. Örneğin nesne ait sadece bir tarih alanı
* güncellenmek isteniyorsa bu metoda yollanan xml tanımında nesne okumak için gerekli ikincil anahtar ve
* hazırlık (init-required) alanları haricinde sadece bu güncellenecek tarih alanı dolu olmalıdır.
* Yoksa xml'de doldurulmus olan tüm alanlar veri tabanındaki değerleri ezer. Aynı sey link nesneler için de geçerlidir.
* Metoda yollanan xml içinde nesne silinmek üzere isaretlendiyse nesne xml'deki bilgilerle okunmaya çalısılır,
* okuma basarılı olursa nesne silinir. Nesne kaydetme metodunda dikkat edilmesi gerekli son nokta ise xml tanımında
* bulunan bağlantılı (link) nesneler için nesnenin ikincil anahtar değeri ile bulunamadığı durumda ortaya çıkar.
* Örneğin faturaya ait cari hesap bilgisi veri tabanında bulunamıyorsa bu durumda 2 yöntem izlenebilir.
* Bulunamayan nesne xml'deki bilgiler kullanılarak yaratılabilir ya da kaydetme islemi basarısız olur.
* Bulunamayan nesnelerin kaydedilmesi özelliği kaydetme ayarları nesnesi ile açılabilen bir özelliktir.
*
* @return DescribeResponse
* @throws Exception
*/
@Test
public void testbSave() throws Exception {
try {
ImportParameters parameters = new ImportParameters();
parameters.setFirm(TestGlobal.firm);
parameters.setPeriod(TestGlobal.period);
parameters.setLanguage(TestGlobal.lang);
parameters.setBoName(TestGlobal.boNames[0]); // AMXOAsset için
parameters.setUseGivenPrimaryKeys(false);
parameters.setSkipInsertExisting(true);
parameters.setSingleTransaction(true);
Save save = new Save();
save.setParameters(parameters);
// save.setObjectXML(describeResp.get_return().getSecKeyXML());
save.setObjectXML(LbsFileUtil.readTextFile("data//AMXFAssetSample1.xml"));
SaveResponse saveResponse = stub.save(save);
assertEquals(true, saveResponse.get_return().getSuccessful());
savedPrimaryKey = saveResponse.get_return().getPrimaryKeyArr()[0];
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
*
*
*
*
* @throws Exception
*/
@Test
public void testSave_AMBOSlip() throws Exception {
try {
if (stub == null) {
setup();
}
ImportParameters parameters = new ImportParameters();
parameters.setFirm(TestGlobal.firm);
parameters.setPeriod(TestGlobal.period);
parameters.setLanguage(TestGlobal.lang);
parameters.setBoName("com.lbs.unity.am.bo.AMBOSlip"); // AMXOAssetSlip için
parameters.setUseGivenPrimaryKeys(false);
parameters.setSkipInsertExisting(true);
parameters.setSingleTransaction(true);
Save save = new Save();
save.setParameters(parameters);
// save.setObjectXML(describeResp.get_return().getSecKeyXML());
save.setObjectXML(LbsFileUtil.readTextFile("data//AMXOSlipSample.xml"));
SaveResponse saveResponse = stub.save(save);
assertEquals(true, saveResponse.get_return().getSuccessful());
savedPrimaryKey = saveResponse.get_return().getPrimaryKeyArr()[0];
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* Callback Handler
*/
@Override
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException {
try {
for (int i = 0; i < callbacks.length; i++) {
WSPasswordCallback pwcb = (WSPasswordCallback) callbacks[i];
String id = pwcb.getIdentifier();
if (TestGlobal.userName.equals(id)) {
pwcb.setPassword(TestGlobal.password);
}
}
} catch (Exception e) {
e.printStackTrace();
fail(e.getMessage());
}
}
}
Copyright © 2018 Logo Yazılım