![]() |
ADOS Developer's Site - XML Stadium |
![]() |
![]() |
|
![]() |
【受信したServiceContentをCSVファイルに変換し、出力】目次 概要 †受信したPIPメッセージのServiceContentを、バックエンドに入力するCSVファイルに変換する方法を解説します。 【PIPReceiverCSV.java】 1 : import java.io.File; 2 : import java.io.FileInputStream; 3 : import java.io.FileWriter; 4 : import java.util.Iterator; 5 : import java.util.Properties; 6 : 7 : import com.ados.hestia.mapping.Translator; 8 : import com.ados.hestia.mapping.TranslatorFactory; 9 : import com.ados.hestia.parser.rnbm.exchange.Container; 10 : import com.ados.hestia.parser.rnbm.exchange.PayloadContainer; 11 : import com.ados.hestia.parser.rnbm.exchange.StatusContainer; 12 : import com.ados.hestia.parser.rnbm.particle.ServiceContent; 13 : import com.ados.hestia.repository.MapRuleStore; 14 : import com.ados.hestia.repository.Mapping; 15 : import com.ados.hestia.sdk.Configuration; 16 : import com.ados.hestia.sdk.Connection; 17 : import com.ados.hestia.sdk.message.DirectMessageExchanger; 18 : import com.ados.hestia.sdk.session.RespondSession; 19 : import com.ados.hestia.sdk.session.Session; 20 : import com.ados.hestia.utils.csv.CSVWriter; 21 : import com.ados.hestia.utils.csv.CSVWriterImpl; 22 : import com.ados.hestia.utils.csv.RecordSet; 23 : 24 : public class PIPReceiverCSV { 25 : 26 : public static void main(String[] args) { 27 : try { 28 : Properties prop = new Properties(); 29 : prop.load(new FileInputStream("sample.properties")); 30 : String HOST = prop.getProperty("HOST"); 31 : String USER = prop.getProperty("USER"); 32 : String PASS = prop.getProperty("PASS"); 33 : String HANDLER_ID = prop.getProperty("HANDLER_ID"); 34 : String DIR = System.getProperty("user.dir") + File.separator 35 : + "output" + File.separator + "csv"; 36 : 37 : Connection connection = new Connection(HOST, USER, PASS, 38 : Connection.EXCHANGE_MODE_DIRECT, null, null, null, 39 : HANDLER_ID); 40 : DirectMessageExchanger exchanger = new DirectMessageExchanger( 41 : connection, Configuration.getInstance()); 42 : 43 : MapRuleStore store = new MapRuleStore(System 44 : .getProperty("user.dir") 45 : + File.separator, "mapRule"); 46 : SampleUtils.println("Mapping :" + store.size()); 47 : 48 : new File(DIR).mkdirs(); 49 : int time = 0; 50 : boolean loop = true; 51 : while (loop) { 52 : Thread.sleep(5000); 53 : SampleUtils.println("loop : " + time++); 54 : exchanger.hit(); 55 : 56 : Container container = exchanger.receiveMessage(); 57 : if (container != null) { 58 : SampleUtils.printContainerInformation(container); 59 : PayloadContainer request = (PayloadContainer) container; 60 : ServiceContent sc = request.getServiceContent(); 61 : SampleUtils.printServiceContent(sc); 62 : Session session = new RespondSession(request 63 : .getRemotePartner(), request.getPIPID()); 64 : SampleUtils.printSessionState("created", session); 65 : session.pushMessage(request); 66 : SampleUtils.printSessionState("pushed", session); 67 : session.acceptPartnerMessage(); 68 : SampleUtils.printSessionState("accepted", session); 69 : StatusContainer status = session.getStatusToSend(); 70 : SampleUtils.printSessionState("sent status", session); 71 : SampleUtils.printContainerInformation(status); 72 : exchanger.sendMessage(status); 73 : exchanger.hit(); 74 : 75 : Mapping mapping = null; 76 : Iterator iter = store.getRuleIDs().iterator(); 77 : while (iter.hasNext()) { 78 : String mapid = (String) iter.next(); 79 : mapping = store.getMapping(mapid); 80 : if (mapping.getPipId().equals(sc.getPIPID()) 81 : && mapping.getPipVersion().equals( 82 : sc.getFullVersion()) 83 : && mapping.getDirection().equals( 84 : Mapping.RNBM2TABLE)) { 85 : store.fillMappingBaseDir(mapping); 86 : SampleUtils.println(mapid); 87 : break; 88 : } 89 : } 90 : TranslatorFactory factory = new TranslatorFactory(); 91 : Translator translator = factory.newTranslator(mapping); 92 : translator.setTargetDocument(sc); 93 : translator.translate(); 94 : RecordSet record = translator.getResultAsRecordSet(); 95 : String filename = DIR 96 : + File.separator 97 : + sc.getPIPID() 98 : + "_" 99 : + sc.getVersion() 100 : + "_" 101 : + sc.getFromRole() 102 : .getGlobalBusinessIdentifierNorm() 103 : + "_" 104 : + sc.getDocumentGenerationDateTime() 105 : .getRNDateTime() + "_" 106 : + sc.getDocumentIdentifier() + ".csv"; 107 : SampleUtils.println(filename); 108 : CSVWriter writer = new CSVWriterImpl(); 109 : FileWriter fwriter = new FileWriter(filename); 110 : writer.write(fwriter, ',', '\'', 111 : CSVWriter.QuotedStrategy.FIELDS_WITH_SPACE, true, 112 : record); 113 : fwriter.close(); 114 : 115 : loop = false; 116 : } 117 : } 118 : 119 : } catch (Exception e) { 120 : e.printStackTrace(); 121 : } 122 : } 123 : 124 : } ServiceContentをCSVに変換するXSLT †XSLTでは、CSVを直接出力するのではなく、以下のようなXMLを出力します。 【XSLTで出力するXMLのイメージ】 <csv> <row> <AAA>a1</AAA> <BBB>b1</BBB> <CCC>c1</CCC> </row> <row> <AAA>a2</AAA> <BBB>b2</BBB> <CCC>c2</CCC> </row> ・・・ </csv> すると、以下のようなCSVを出力することができます。 【出力されるCSV】
CSVの出力 †Mappingの選択やXSLTの実行の方法は、XMLへ変換する場合と同じです。変換結果をRecordSetで取得する点のみ異なります。 94 : RecordSet record = translator.getResultAsRecordSet(); CSVWriterを使用して、RecordSetをCSV形式に出力します。 108 : CSVWriter writer = new CSVWriterImpl(); 109 : FileWriter fwriter = new FileWriter(filename); 110 : writer.write(fwriter, ',', '\'', 111 : CSVWriter.QuotedStrategy.FIELDS_WITH_SPACE, true, 112 : record); 113 : fwriter.close();
|
Copyright 2005-2008. ADOS Co., Ltd. All Rights Reserved. |