/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* Copyright (c) 2013, MPL CodeInside http://codeinside.ru
*/
package ru.codeinside.gws.c.oep.dict;
import ru.codeinside.gws.api.Client;
import ru.codeinside.gws.api.ClientRequest;
import ru.codeinside.gws.api.ClientResponse;
import ru.codeinside.gws.api.ExchangeContext;
import ru.codeinside.gws.api.Packet;
import ru.codeinside.gws.api.Revision;
import ru.codeinside.gws.api.XmlTypes;
import ru.codeinside.gws.c.oep.dict.app.AppData;
import ru.codeinside.gws.c.oep.dict.data.DataRow;
import ru.codeinside.gws.c.oep.dict.data.Result;
import javax.xml.namespace.QName;
import java.net.URL;
import java.util.List;
final public class Dictionary implements Client {
@Override
public Revision getRevision() {
return Revision.rev120315;
}
@Override
public URL getWsdlUrl() {
return getClass().getClassLoader().getResource("wsdl/universaldictionary.wsdl");
}
@Override
public ClientRequest createClientRequest(ExchangeContext ctx) {
ClientRequest request = new ClientRequest();
request.packet = createPacket();
request.action = new QName("http://dictionary.oep.com/", "getEntryList");
request.appData = createAppData(ctx);
return request;
}
private Packet createPacket() {
Packet packet = new Packet();
//packet.recipient = new InfoSystem("PNZR01581", "Комплексная система предоставления государственных и муниципальных услуг Пензенской области");
packet.typeCode = Packet.Type.SERVICE;
//packet.date = new Date();
//packet.serviceName = "UniversalDictionary";
packet.exchangeType = "1";
packet.status = Packet.Status.REQUEST;
return packet;
}
private String createAppData(ExchangeContext ctx) {
DataRow dataRow = new DataRow();
dataRow.setName("dictionaryName");
dataRow.setValue((String) ctx.getVariable("dictionaryName"));
Result result = new Result();
result.getDataRow().add(dataRow);
return new XmlTypes(Result.class).toXml(result);
}
@Override
public void processClientResponse(ClientResponse response, ExchangeContext ctx) {
AppData appData = XmlTypes.elementToBean(response.appData, AppData.class);
Result result = appData.getResult().get(0);
List<DataRow> rows = result.getDataRow();
ctx.setVariable("values", rows.size());
int i = 1;
for (DataRow row : rows) {
ctx.setVariable("name_" + i, row.getName());
ctx.setVariable("value_" + i, row.getValue());
i++;
}
}
}