package com.nortal.jroad.client.viisaregister;
import java.util.Calendar;
import javax.annotation.Resource;
import javax.xml.namespace.QName;
import org.apache.xmlbeans.XmlCursor;
import org.springframework.stereotype.Service;
import com.nortal.jroad.client.exception.XRoadServiceConsumptionException;
import com.nortal.jroad.client.service.XRoadDatabaseService;
import com.nortal.jroad.client.viisaregister.database.ViisaregisterXRoadDatabase;
import com.nortal.jroad.client.viisaregister.types.ee.riik.xtee.viisaregister.producers.producer.viisaregister.StruktIsikSuguMK;
import com.nortal.jroad.client.viisaregister.types.ee.riik.xtee.viisaregister.producers.producer.viisaregister.TaotluseAndmedIsikReisidokSisend;
import com.nortal.jroad.client.viisaregister.types.ee.riik.xtee.viisaregister.producers.producer.viisaregister.TaotluseAndmedNrLiikSisend;
import com.nortal.jroad.client.viisaregister.types.ee.riik.xtee.viisaregister.producers.producer.viisaregister.TaotluseAndmedVastus;
import com.nortal.jroad.client.viisaregister.types.ee.riik.xtee.viisaregister.producers.producer.viisaregister.TaotlusteNimistuVastus;
@Service("viisaregisterXTeeService")
public class ViisaregisterXTeeServiceImpl extends XRoadDatabaseService implements ViisaregisterXTeeService {
@Resource
private ViisaregisterXRoadDatabase viisaregisterXRoadDatabase;
public TaotlusteNimistuVastus taotluseAndmedIsikReisidokumentParing(String eesnimi, String perenimi, Calendar synniaeg, String sugu, String reisiDokLiik, String reisiDokNr, Calendar reisiDokValjastamisKuup, String toimik) throws XRoadServiceConsumptionException {
TaotluseAndmedIsikReisidokSisend paring = TaotluseAndmedIsikReisidokSisend.Factory.newInstance();
if (eesnimi != null || perenimi != null || synniaeg != null || sugu != null) {
StruktIsikSuguMK isik = paring.addNewIsik();
isik.setEesnimi(eesnimi);
isik.setPerenimi(perenimi);
isik.setSynniaeg(synniaeg);
com.nortal.jroad.client.viisaregister.types.ee.riik.xtee.viisaregister.producers.producer.viisaregister.Sugu.Enum suguEnum = com.nortal.jroad.client.viisaregister.types.ee.riik.xtee.viisaregister.producers.producer.viisaregister.Sugu.Enum.forString(sugu);
isik.setSugu(suguEnum);
}
com.nortal.jroad.client.viisaregister.types.ee.riik.xtee.viisaregister.producers.producer.viisaregister.ReisiDokLiik.Enum reisiDokLiikEnum = com.nortal.jroad.client.viisaregister.types.ee.riik.xtee.viisaregister.producers.producer.viisaregister.ReisiDokLiik.Enum.forString(reisiDokLiik);
paring.setReisiDokLiik(reisiDokLiikEnum);
paring.setReisiDokNr(reisiDokNr);
paring.setReisiDokValjastamisKuup(reisiDokValjastamisKuup);
//Kuna viisaregister tahab kindlasti oma xsi:type atribuute näha, siis paneme need käsitsi külge
XmlCursor cursor = paring.newCursor();
while (!cursor.isEnddoc()) {
if (cursor.isStart() && cursor.getName().getLocalPart().equals("isik")) {
cursor.toNextToken();
cursor.insertAttributeWithValue(new QName("http://www.w3.org/2001/XMLSchema-instance", "type", "xsi"), "ns5:struktIsikSuguMK");
}
if (cursor.isStart() && cursor.getName().getLocalPart().equals("eesnimi")) {
cursor.toNextToken();
cursor.insertAttributeWithValue(new QName("http://www.w3.org/2001/XMLSchema-instance", "type", "xsi"), "xsd:string");
}
if (cursor.isStart() && cursor.getName().getLocalPart().equals("perenimi")) {
cursor.toNextToken();
cursor.insertAttributeWithValue(new QName("http://www.w3.org/2001/XMLSchema-instance", "type", "xsi"), "xsd:string");
}
if (cursor.isStart() && cursor.getName().getLocalPart().equals("synniaeg")) {
cursor.toNextToken();
cursor.insertAttributeWithValue(new QName("http://www.w3.org/2001/XMLSchema-instance", "type", "xsi"), "xsd:date");
}
if (cursor.isStart() && cursor.getName().getLocalPart().equals("sugu")) {
cursor.toNextToken();
cursor.insertAttributeWithValue(new QName("http://www.w3.org/2001/XMLSchema-instance", "type", "xsi"), "ns5:sugu");
}
if (cursor.isStart() && cursor.getName().getLocalPart().equals("reisiDokLiik")) {
cursor.toNextToken();
cursor.insertAttributeWithValue(new QName("http://www.w3.org/2001/XMLSchema-instance", "type", "xsi"), "ns5:reisiDokLiik");
}
if (cursor.isStart() && cursor.getName().getLocalPart().equals("reisiDokNr")) {
cursor.toNextToken();
cursor.insertAttributeWithValue(new QName("http://www.w3.org/2001/XMLSchema-instance", "type", "xsi"), "xsd:string");
}
if (cursor.isStart() && cursor.getName().getLocalPart().equals("reisiDokValjastamisKuup")) {
cursor.toNextToken();
cursor.insertAttributeWithValue(new QName("http://www.w3.org/2001/XMLSchema-instance", "type", "xsi"), "xsd:date");
}
cursor.toNextToken();
}
return viisaregisterXRoadDatabase.taotlAndmedIsikReisidokParingV1(paring);
}
public TaotluseAndmedVastus taotluseAndmedNrLiikParing(String taotluseLiik, String taotluseNr) throws XRoadServiceConsumptionException {
TaotluseAndmedNrLiikSisend paring = TaotluseAndmedNrLiikSisend.Factory.newInstance();
paring.setTaotluseLiik(com.nortal.jroad.client.viisaregister.types.ee.riik.xtee.viisaregister.producers.producer.viisaregister.TaotluseLiik.Enum.forString(taotluseLiik));
paring.setTaotluseNr(taotluseNr);
//Kuna viisaregister tahab kindlasti oma xsi:type atribuute näha, siis paneme need käsitsi külge
XmlCursor cursor = paring.newCursor();
while (!cursor.isEnddoc()) {
if (cursor.isStart() && cursor.getName().getLocalPart().equals("taotluseLiik")) {
cursor.toNextToken();
cursor.insertAttributeWithValue(new QName("http://www.w3.org/2001/XMLSchema-instance", "type", "xsi"), "ns5:taotluseLiik");
}
if (cursor.isStart() && cursor.getName().getLocalPart().equals("taotluseNr")) {
cursor.toNextToken();
cursor.insertAttributeWithValue(new QName("http://www.w3.org/2001/XMLSchema-instance", "type", "xsi"), "xsd:string");
}
cursor.toNextToken();
}
return viisaregisterXRoadDatabase.taotlAndmedNrLiikParingV1(paring);
}
public void setViisaregisterXRoadDatabase(ViisaregisterXRoadDatabase viisaregisterXRoadDatabase) {
this.viisaregisterXRoadDatabase = viisaregisterXRoadDatabase;
}
}