/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package clips.directory.editors.serviceGroup;
import cli_fmw.delegate.directory.DirectoryItemRO;
import clips.delegate.directory.complex.DirectoryDoctorAction;
import clips.delegate.directory.complex.DirectoryDoctorActionItem;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import clips.delegate.directory.complex.DirectoryServicesGroup;
import clips.delegate.directory.complex.DirectoryServicesGroupItem;
import clips.delegate.directory.filtered.ChildServiceData;
import clips.delegate.directory.filtered.DirectoryService;
import clips.delegate.directory.filtered.DirectoryServiceItem;
import cli_fmw.main.ClipsException;
import beans.directory.doctoraction.entity.DoctorActionDetails;
import beans.directory.service.entity.ServiceDetails;
import beans.directory.service.entity.ServiceGroupDetails;
import beans.directory.service.entity.ServiceToServiceDetails;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
*
* @author lacoste
*/
public class ServiceParser {
BufferedReader input;
public ServiceParser(File source) throws FileNotFoundException {
input = new BufferedReader(new FileReader(source));
}
public void uploadService() throws IOException, ClipsException {
DirectoryServicesGroup dirGroup =
(DirectoryServicesGroup) DirectoryLocator.getDirectory(DirectoryServicesGroup.class, false);
DirectoryService dirService =
(DirectoryService) DirectoryLocator.getDirectory(DirectoryService.class, false);
DirectoryServicesGroupItem parent = null;
DirectoryServicesGroupItem group = null;
DirectoryServiceItem service = null;
String line = input.readLine();
while (line != null) {
if (!line.trim().isEmpty()) {
int pos = line.indexOf('|');
if (pos > -1) {
String code = line.substring(0, pos);
String title = line.substring(pos + 1);
if (code.length() == 2) {
ServiceGroupDetails parDetails = new ServiceGroupDetails();
parDetails.code = code;
parDetails.parentItem = 0;
parDetails.title = title;
parent = new DirectoryServicesGroupItem(parDetails);
dirGroup.getItems().append(parent);
System.out.println(code + " " + title);
}
else if (code.length() == 6) {
code = code.substring(3, 6);
ServiceGroupDetails grDetails = new ServiceGroupDetails();
grDetails.code = code;
grDetails.parentItem = parent.getID();
grDetails.title = title;
group = new DirectoryServicesGroupItem(grDetails);
dirGroup.getItems().append(group);
System.out.println(" " +code + " " + title);
}
else if (code.length() == 9) {
code = code.substring(7);
ServiceDetails servDetails = new ServiceDetails();
servDetails.checkupType = 0;
servDetails.code = code;
servDetails.defaultDuration = 0;
servDetails.description = "";
servDetails.serviceClass = 1;
servDetails.serviceGroup = group.getID();
servDetails.title = title;
service = new DirectoryServiceItem(servDetails);
dirService.getItems().append(service);
System.out.println(" " +code + " " + title);
}
}
}
line = input.readLine();
}
input.close();
}
public void uploadDoctorAction() throws IOException, ClipsException {
DirectoryDoctorAction dirAction =
(DirectoryDoctorAction) DirectoryLocator.getDirectory(DirectoryDoctorAction.class, false);
DirectoryDoctorActionItem parent = null;
DirectoryDoctorActionItem current = null;
DirectoryDoctorActionItem item = null;
String line = input.readLine();
while (line != null) {
if (!line.trim().isEmpty()) {
int pos = line.indexOf('|');
if (pos > -1) {
String code = line.substring(0, pos);
String title = line.substring(pos + 1);
if (code.length() == 2) {
DoctorActionDetails details = new DoctorActionDetails();
details.parentItem = 0;
details.title = title;
details.code = code;
parent = new DirectoryDoctorActionItem(details);
dirAction.getItems().append(parent);
System.out.println(code + " " + title);
}
else if (code.length() == 5) {
code = code.substring(3, 5);
DoctorActionDetails details = new DoctorActionDetails();
details.parentItem = parent.getID();
details.title = title;
details.code = code;
current = new DirectoryDoctorActionItem(details);
dirAction.getItems().append(current);
System.out.println(" " +code + " " + title);
}
else if (code.length() == 9) {
code = code.substring(6);
DoctorActionDetails details = new DoctorActionDetails();
details.parentItem = current.getID();
details.title = title;
details.code = code;
item = new DirectoryDoctorActionItem(details);
dirAction.getItems().append(item);
System.out.println(" " +code + " " + title);
}
}
}
line = input.readLine();
}
input.close();
}
public void uploadServiceActions() throws IOException, ClipsException {
DirectoryDoctorAction dirAction =
(DirectoryDoctorAction) DirectoryLocator.getDirectory(DirectoryDoctorAction.class, false);
DirectoryService dirService =
(DirectoryService) DirectoryLocator.getDirectory(DirectoryService.class, false);
Map<String, DirectoryServiceItem> serviceMap = new HashMap<String, DirectoryServiceItem>();
for (int i = 0; i < dirService.getItems().size(); i++) {
DirectoryServiceItem item = dirService.getItems().get(i);
serviceMap.put(item.getFullCode(), item);
}
Map<String, DirectoryDoctorActionItem> actionMap = new HashMap<String, DirectoryDoctorActionItem>();
DirectoryItemRO[] actionArr = dirAction.toArray(false, true);
for (int i = 0; i < actionArr.length; i++) {
DirectoryDoctorActionItem item = (DirectoryDoctorActionItem) actionArr[i];
actionMap.put(item.getGroupCode(), item);
}
DirectoryServiceItem pservice = null;
DirectoryServiceItem cservice = null;
DirectoryDoctorActionItem action = null;
String line = input.readLine();
while (line != null) {
if (!line.trim().isEmpty()) {
int pos = line.indexOf('|');
if (pos > -1) {
String code = line.substring(0, pos);
String title = line.substring(pos + 1);
String c;
if (code.startsWith("@")) {
pservice = null;
c = code.substring(2);
pservice = serviceMap.get(c);
if (pservice == null) {
System.out.println("!!!!!Услуга: " + c + " " + title);
}
else {
System.out.println("Услуга: " + pservice.getFullCode() + " " + pservice.getTitle());
}
}
else if (code.startsWith("B")) {
cservice = null;
c = code.substring(1);
cservice = serviceMap.get(c);
if (cservice == null) {
System.out.println(" !!!!!Услуга: " + c + " " + title);
}
else {
ServiceToServiceDetails details = new ServiceToServiceDetails(0);
details.pserviceId = pservice.getID();
details.cserviceId = cservice.getID();
ChildServiceData child = new ChildServiceData(details);
pservice.getChildServices().append(child);
}
}
else if (code.startsWith("A")) {
action = null;
c = code.substring(1);
action = actionMap.get(c);
if (action == null) {
System.out.println(" !!!!!!Действие: " + c + " " + title);
}
else {
pservice.getDoctorActions().append(action);
}
}
}
}
line = input.readLine();
}
input.close();
}
}