package com.nortal.jroad.client.rrv5; import com.nortal.jroad.client.exception.XRoadServiceConsumptionException; import com.nortal.jroad.client.rrv5.database.Rrv5XRoadDatabase; import com.nortal.jroad.client.rrv5.types.ee.x_road.rr_v5.producer.RR435; import com.nortal.jroad.client.rrv5.types.ee.x_road.rr_v5.producer.RR435Response; import com.nortal.jroad.client.rrv5.types.ee.x_road.rr_v5.producer.RR436; import com.nortal.jroad.client.rrv5.types.ee.x_road.rr_v5.producer.RR436RequestType; import com.nortal.jroad.client.rrv5.types.ee.x_road.rr_v5.producer.RR436Response; import com.nortal.jroad.client.rrv5.types.ee.x_road.rr_v5.producer.RR71FailDownload; import com.nortal.jroad.client.rrv5.types.ee.x_road.rr_v5.producer.RR71FailDownloadResponse; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import javax.annotation.Resource; import com.nortal.jroad.client.service.XRoadDatabaseService; import org.springframework.stereotype.Service; import org.apache.commons.codec.binary.Base64; /** * @author Anti Orgla */ @Service("rrv5XTeeService") public class Rrv5XTeeServiceImpl extends XRoadDatabaseService implements Rrv5XTeeService { @Resource private Rrv5XRoadDatabase rrV5XRoadDatabase; @Override public RR435Response findRR435(String legalCode) throws XRoadServiceConsumptionException { RR435 paring = RR435.Factory.newInstance(); paring.addNewRequest().setIsikukood(legalCode); return rrV5XRoadDatabase.rr435V1(paring); } @Override public RR436Response findRR436(List<String> idCodes) throws XRoadServiceConsumptionException { String base64 = null; ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ZipOutputStream zipStream = new ZipOutputStream(outputStream); ZipEntry entry = new ZipEntry("rr436_idcodes.txt"); try { zipStream.putNextEntry(entry); for (String isikukood : idCodes) { zipStream.write(isikukood.getBytes("UTF-8")); zipStream.write(System.getProperty("line.separator").getBytes("UTF-8")); } zipStream.closeEntry(); zipStream.close(); } catch (IOException e) { e.printStackTrace(); } byte[] bytes = outputStream.toByteArray(); base64 = Base64.encodeBase64String(bytes); RR436 paring = RR436.Factory.newInstance(); RR436RequestType request = paring.addNewRequest(); request.setIsikukoodideArv(String.valueOf(idCodes.size())); request.setCFailiSisu(base64); return rrV5XRoadDatabase.rr436V1(paring); } @Override public RR71FailDownloadResponse findRR71(String orderNr) throws XRoadServiceConsumptionException { RR71FailDownload paring = RR71FailDownload.Factory.newInstance(); paring.addNewRequest().setCFailiNimi(orderNr); RR71FailDownloadResponse response = rrV5XRoadDatabase.rr71FailDownloadV1(paring); return response; } }