package net.codjo.dataprocess.common.codec;
import net.codjo.dataprocess.common.model.ArgList;
import net.codjo.dataprocess.common.model.ArgModel;
import net.codjo.dataprocess.common.model.ResultTable;
import net.codjo.dataprocess.common.model.TreatmentModel;
import net.codjo.dataprocess.common.model.TreatmentRoot;
import net.codjo.test.common.PathUtil;
import net.codjo.test.common.XmlUtil;
import net.codjo.util.file.FileUtil;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.junit.Test;
import static net.codjo.test.common.matcher.JUnitMatchers.*;
/**
*
*/
public class TreatmentRootCodecTest {
@Test
public void decode() throws Exception {
String content = FileUtil.loadContent(toFile("RepositoryTest.xml"));
TreatmentRoot treatRoot = TreatmentRootCodec.decode(content);
assertTreatmentRoot(treatRoot);
}
@Test
public void decodeFromResources() {
TreatmentRoot treatmentRoot = TreatmentRootCodec.decodeFromResources("RepositoryTest.xml");
assertTreatmentRoot(treatmentRoot);
}
@Test
public void encode() throws Exception {
TreatmentRoot root = new TreatmentRoot();
TreatmentModel trtModel =
createTreatment("TraitementJavaExemple", "java", "TraitementJavaExemple",
"TraitementJavaExemple",
"net.codjo.creo.dataprocess.treatment.TraitementJavaExemple", null,
null);
List<ArgModel> args = new ArrayList<ArgModel>();
args.add(new ArgModel("maColonne", "$maColonne$", 1, 12));
args.add(new ArgModel("monLibelle", "$monLibelle$", 2, 12));
addArgument(trtModel, args);
addTreatment(root, trtModel);
trtModel = createTreatment("TraitementSqlExemple", "sql_with_result", "Test de la mort",
"Test de la mort",
"insert into MA_TABLE (MA_COLONNE, MON_LIBELLE) values (?, ?) select * from MA_TABLE",
new ResultTable("AP_MA_TABLE", "selectAllPeriod"),
"net.codjo.palanoob");
args = new ArrayList<ArgModel>();
args.add(new ArgModel("maColonne", "$maColonne$", 1, 12));
args.add(new ArgModel("monLibelle", "$monLibelle$", 2, 12));
addArgument(trtModel, args);
addTreatment(root, trtModel);
XmlUtil.assertEquals(FileUtil.loadContent(toFile("TreatmentRootTest.xml")),
TreatmentRootCodec.encode(root));
}
@Test
public void encodeWithOneTreatment() throws Exception {
ArgList argList = new ArgList();
List<ArgModel> args = new ArrayList<ArgModel>();
TreatmentModel trtModel = new TreatmentModel();
trtModel.setId("monTraitement1");
trtModel.setTitle("titre du traitement");
trtModel.setTarget("net.codjo.Maclasse");
trtModel.setGuiTarget("net.codjo.palanoob");
trtModel.setComment("pioupiou aime les pommes et les �clairs aux chocolats");
trtModel.setResultTable(new ResultTable("MA_TABLE", null));
trtModel.setType("le troisi�me type");
args.add(new ArgModel("periode", "200611", 1, 12));
args.add(new ArgModel("typestock", "HB2", 2, 12));
argList.setArgs(args);
trtModel.setArguments(argList);
String expected = FileUtil.loadContent(toFile("TreatmentRoot_oneTreatmentTest.xml"));
TreatmentRoot root = new TreatmentRoot();
addTreatment(root, trtModel);
XmlUtil.assertEquals(expected, TreatmentRootCodec.encode(root));
}
private static void addTreatment(TreatmentRoot root, TreatmentModel trtModel) {
root.getTreatmentModelList().add(trtModel);
}
private static void addArgument(TreatmentModel trtModel, List<ArgModel> args) {
ArgList argList = new ArgList();
argList.setArgs(args);
trtModel.setArguments(argList);
}
private static void assertTreatmentRoot(TreatmentRoot treatRoot) {
assertThat(treatRoot, notNullValue());
assertThat(3, equalTo(treatRoot.getTreatmentModelList().size()));
Iterator i1 = treatRoot.getTreatmentModelList().iterator();
TreatmentModel item = (TreatmentModel)i1.next();
assertThat("1", equalTo(item.getId()));
assertThat("commentaire magnifique et �trange", equalTo(item.getComment()));
assertThat("titre magnifique", equalTo(item.getTitle()));
assertThat("stored_procedure", equalTo(item.getType()));
assertThat("sp_maproc", equalTo(item.getTarget()));
assertThat("net.codjo.wow.druide", equalTo(item.getGuiTarget()));
ArgList argList = item.getArguments();
assertThat(argList.getArgs().size() == 2, equalTo(true));
item = (TreatmentModel)i1.next();
assertThat("2", equalTo(item.getId()));
assertThat("titre 2", equalTo(item.getTitle()));
assertThat("sql", equalTo(item.getType()));
assertThat("insert into MEHDI values (?,?)", equalTo(item.getTarget()));
assertThat("net.codjo.wow.chaman", equalTo(item.getGuiTarget()));
argList = item.getArguments();
assertThat(argList.getArgs().size() == 3, equalTo(true));
item = (TreatmentModel)i1.next();
assertThat("commentaire pas magnifique", equalTo(item.getComment()));
assertThat("titre pas magnifique", equalTo(item.getTitle()));
assertThat("3", equalTo(item.getId()));
assertThat("java", equalTo(item.getType()));
assertThat("net.codjo.dataprocess.MonTraitement", equalTo(item.getTarget()));
assertThat("net.codjo.wow.chaman.nerf.nref", equalTo(item.getGuiTarget()));
}
private static File toFile(String resourceName) {
return new File(PathUtil.findResourcesFileDirectory(TreatmentModelCodecTest.class), resourceName);
}
private static TreatmentModel createTreatment(String id,
String type,
String comment,
String title,
String target,
ResultTable resultTable,
String guiTarget) {
TreatmentModel trtModel = new TreatmentModel();
trtModel.setId(id);
trtModel.setTitle(title);
trtModel.setTarget(target);
trtModel.setComment(comment);
trtModel.setResultTable(resultTable);
trtModel.setType(type);
trtModel.setGuiTarget(guiTarget);
return trtModel;
}
}