@Override public List<ValidationMessage> validate(final Path path, final GuidedDecisionTable52 content) { try { return genericValidator.validate(path, GuidedDTXMLPersistence.getInstance().marshal(content)); } catch (Exception e) { throw ExceptionUtilities.handleException(e); } }
@Override public Path create(final Path context, final String fileName, final GuidedDecisionTable52 content, final String comment) { try { final Package pkg = moduleService.resolvePackage(context); final String packageName = (pkg == null ? null : pkg.getPackageName()); content.setPackageName(packageName); final org.uberfire.java.nio.file.Path nioPath = Paths.convert(context).resolve(fileName); final Path newPath = Paths.convert(nioPath); if (ioService.exists(nioPath)) { throw new FileAlreadyExistsException(nioPath.toString()); } ioService.write(nioPath, GuidedDTXMLPersistence.getInstance().marshal(content), commentedOptionFactory.makeCommentedOption(comment)); return newPath; } catch (Exception e) { throw ExceptionUtilities.handleException(e); } }
@Override public void postProcess( final Path source, final Path destination ) { //Load existing file final org.uberfire.java.nio.file.Path _destination = Paths.convert( destination ); final String content = ioService.readAllString( Paths.convert( destination ) ); final GuidedDecisionTable52 model = GuidedDTXMLPersistence.getInstance().unmarshal( content ); //Update table name final String tableName = FileNameUtil.removeExtension( destination, resourceType ); model.setTableName( tableName ); //Save file ioService.write( _destination, GuidedDTXMLPersistence.getInstance().marshal( model ), commentedOptionFactory.makeCommentedOption( "File [" + source.toURI() + "] copied to [" + destination.toURI() + "]." ) ); }
@Override public void postProcess( final Path source, final Path destination ) { //Load existing file final org.uberfire.java.nio.file.Path _destination = Paths.convert( destination ); final String content = ioService.readAllString( Paths.convert( destination ) ); final GuidedDecisionTable52 model = GuidedDTXMLPersistence.getInstance().unmarshal( content ); //Update table name final String tableName = FileNameUtil.removeExtension( destination, resourceType ); model.setTableName( tableName ); //Save file ioService.write( _destination, GuidedDTXMLPersistence.getInstance().marshal( model ), commentedOptionFactory.makeCommentedOption( "File [" + source.toURI() + "] renamed to [" + destination.toURI() + "]." ) ); }
@Override public Path save(final Path resource, final GuidedDecisionTable52 model, final Metadata metadata, final String comment) { try { final Package pkg = moduleService.resolvePackage(resource); final String packageName = (pkg == null ? null : pkg.getPackageName()); model.setPackageName(packageName); Metadata currentMetadata = metadataService.getMetadata(resource); ioService.write(Paths.convert(resource), GuidedDTXMLPersistence.getInstance().marshal(model), metadataService.setUpAttributes(resource, metadata), commentedOptionFactory.makeCommentedOption(comment)); fireMetadataSocialEvents(resource, currentMetadata, metadata); return resource; } catch (Exception e) { throw ExceptionUtilities.handleException(e); } }
@Test public void testRoundTrip() { final GuidedDecisionTable52 dt = new GuidedDecisionTable52(); dt.setHitPolicy( GuidedDecisionTable52.HitPolicy.FIRST_HIT ); final String xml = GuidedDTXMLPersistence.getInstance() .marshal( dt ); assertNotNull( xml ); assertTrue( xml.contains( "<hitPolicy>FIRST_HIT</hitPolicy>" ) ); final GuidedDecisionTable52 dt_ = GuidedDTXMLPersistence.getInstance() .unmarshal( xml ); assertEquals( GuidedDecisionTable52.HitPolicy.FIRST_HIT, dt_.getHitPolicy() ); }
dt.setTableName("blah"); String xml = GuidedDTXMLPersistence.getInstance().marshal(dt); System.out.println(xml); assertNotNull(xml);
@Test public void testIndexGuidedDecisionTableActions() throws IOException, InterruptedException { //Add test files final Path path = basePath.resolve("dtable1.gdst"); final GuidedDecisionTable52 model = GuidedDecisionTableFactory.makeTableWithActionCol("org.drools.workbench.screens.guided.dtable.backend.server.indexing", new ArrayList<Import>() {{ add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant")); }}, "dtable1"); final String xml = GuidedDTXMLPersistence.getInstance().marshal(model); ioService().write(path, xml); Thread.sleep(5000); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index List<String> index = Arrays.asList(KObjectUtil.toKCluster(basePath).getClusterId()); { final Query query = new SingleTermQueryBuilder(new ValueReferenceIndexTerm("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant", ResourceType.JAVA)) .build(); searchFor(index, query, 1, path); } }
@Test public void testIndexGuidedDecisionTableActions() throws IOException, InterruptedException { //Add test files final Path path = basePath.resolve("dtable1.gdst"); final GuidedDecisionTable52 model = GuidedDecisionTableFactory.makeTableWithActionCol("org.drools.workbench.screens.guided.dtable.backend.server.indexing", new ArrayList<Import>() {{ add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant")); }}, "dtable1"); final String xml = GuidedDTXMLPersistence.getInstance().marshal(model); ioService().write(path, xml); Thread.sleep(5000); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index List<String> index = Arrays.asList(KObjectUtil.toKCluster(basePath).getClusterId()); { final Query query = new SingleTermQueryBuilder(new ValueReferenceIndexTerm("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant", ResourceType.JAVA)) .build(); searchFor(index, query, 1, path); } }
@Test public void testIndexGuidedDecisionTableAttributes() throws IOException, InterruptedException { //Add test files final Path path = basePath.resolve("dtable1.gdst"); final GuidedDecisionTable52 model = GuidedDecisionTableFactory.makeTableWithAttributeCol("org.drools.workbench.screens.guided.dtable.backend.server.indexing", new ArrayList<Import>() {{ add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant")); }}, "dtable1"); final String xml = GuidedDTXMLPersistence.getInstance().marshal(model); ioService().write(path, xml); Thread.sleep(5000); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index List<String> index = Arrays.asList(KObjectUtil.toKCluster(basePath).getClusterId()); //Decision Table defining a RuleFlow-Group named myRuleFlowGroup. This should match dtable1.gdst //This checks whether there is a Rule Attribute "ruleflow-group" and its Value is "myRuleflowGroup" { final Query query = new SingleTermQueryBuilder(new ValueSharedPartIndexTerm("myRuleFlowGroup", PartType.RULEFLOW_GROUP)) .build(); searchFor(index, query, 1, path); } }
@Test public void testIndexGuidedDecisionTableAttributes() throws IOException, InterruptedException { //Add test files final Path path = basePath.resolve("dtable1.gdst"); final GuidedDecisionTable52 model = GuidedDecisionTableFactory.makeTableWithAttributeCol("org.drools.workbench.screens.guided.dtable.backend.server.indexing", new ArrayList<Import>() {{ add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant")); }}, "dtable1"); final String xml = GuidedDTXMLPersistence.getInstance().marshal(model); ioService().write(path, xml); Thread.sleep(5000); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index List<String> index = Arrays.asList(KObjectUtil.toKCluster(basePath).getClusterId()); //Decision Table defining a RuleFlow-Group named myRuleFlowGroup. This should match dtable1.gdst //This checks whether there is a Rule Attribute "ruleflow-group" and its Value is "myRuleflowGroup" { final Query query = new SingleTermQueryBuilder(new ValueSharedPartIndexTerm("myRuleFlowGroup", PartType.RULEFLOW_GROUP)) .build(); searchFor(index, query, 1, path); } }
@Test public void checkSingleFieldConstraintPredicate() throws IOException, InterruptedException { //Add test files final Path path = basePath.resolve("dtable1.gdst"); final GuidedDecisionTable52 model = GuidedDecisionTableFactory.makeTableWithBRLFragmentConditionColWithPredicate("org.drools.workbench.screens.guided.dtable.backend.server.indexing", new ArrayList<Import>() {{ add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant")); add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Mortgage")); }}, "dtable1"); final String xml = GuidedDTXMLPersistence.getInstance().marshal(model); ioService().write(path, xml); Thread.sleep(7500); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index List<String> index = Arrays.asList(KObjectUtil.toKCluster(basePath).getClusterId()); { final Query query = new SingleTermQueryBuilder(new ValueReferenceIndexTerm("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant", ResourceType.JAVA)) .build(); searchFor(index, query, 1, path); } }
@Test public void checkSingleFieldConstraintPredicate() throws IOException, InterruptedException { //Add test files final Path path = basePath.resolve("dtable1.gdst"); final GuidedDecisionTable52 model = GuidedDecisionTableFactory.makeTableWithBRLFragmentConditionColWithPredicate("org.drools.workbench.screens.guided.dtable.backend.server.indexing", new ArrayList<Import>() {{ add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant")); add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Mortgage")); }}, "dtable1"); final String xml = GuidedDTXMLPersistence.getInstance().marshal(model); ioService().write(path, xml); Thread.sleep(7500); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index List<String> index = Arrays.asList(KObjectUtil.toKCluster(basePath).getClusterId()); { final Query query = new SingleTermQueryBuilder(new ValueReferenceIndexTerm("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant", ResourceType.JAVA)) .build(); searchFor(index, query, 1, path); } }
@Test public void testIndexGuidedDecisionTableBRLFragmentActions() throws IOException, InterruptedException { //Add test files final Path path = basePath.resolve("dtable1.gdst"); final GuidedDecisionTable52 model = GuidedDecisionTableFactory.makeTableWithBRLFragmentActionCol("org.drools.workbench.screens.guided.dtable.backend.server.indexing", new ArrayList<Import>() {{ add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant")); add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Mortgage")); }}, "dtable1"); final String xml = GuidedDTXMLPersistence.getInstance().marshal(model); ioService().write(path, xml); Thread.sleep(5000); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index List<String> index = Arrays.asList(KObjectUtil.toKCluster(basePath).getClusterId()); { final Query query = new SingleTermQueryBuilder(new ValueReferenceIndexTerm("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant", ResourceType.JAVA)) .build(); searchFor(index, query, 1, path); } { final Query query = new SingleTermQueryBuilder(new ValueReferenceIndexTerm("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Mortgage", ResourceType.JAVA)) .build(); searchFor(index, query, 1, path); } }
@Test public void testIndexGuidedDecisionTableBRLFragmentConditions() throws IOException, InterruptedException { //Add test files final Path path = basePath.resolve("dtable1.gdst"); final GuidedDecisionTable52 model = GuidedDecisionTableFactory.makeTableWithBRLFragmentConditionCol("org.drools.workbench.screens.guided.dtable.backend.server.indexing", new ArrayList<Import>() {{ add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant")); add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Mortgage")); }}, "dtable1"); final String xml = GuidedDTXMLPersistence.getInstance().marshal(model); ioService().write(path, xml); Thread.sleep(7500); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index List<String> index = Arrays.asList(KObjectUtil.toKCluster(basePath).getClusterId()); { final Query query = new SingleTermQueryBuilder(new ValueReferenceIndexTerm("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant", ResourceType.JAVA)) .build(); searchFor(index, query, 1, path); } { final Query query = new SingleTermQueryBuilder(new ValueReferenceIndexTerm("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Mortgage", ResourceType.JAVA)) .build(); searchFor(index, query, 1, path); } }
@Test public void testIndexGuidedDecisionTableConditions() throws IOException, InterruptedException { //Add test files final Path path = basePath.resolve("dtable1.gdst"); final GuidedDecisionTable52 model = GuidedDecisionTableFactory.makeTableWithConditionCol("org.drools.workbench.screens.guided.dtable.backend.server.indexing", new ArrayList<Import>() {{ add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant")); add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Mortgage")); }}, "dtable1"); final String xml = GuidedDTXMLPersistence.getInstance().marshal(model); ioService().write(path, xml); Thread.sleep(5000); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index List<String> index = Arrays.asList(KObjectUtil.toKCluster(basePath).getClusterId()); { final Query query = new SingleTermQueryBuilder(new ValueReferenceIndexTerm("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant", ResourceType.JAVA)) .build(); searchFor(index, query, 1, path); } { final Query query = new SingleTermQueryBuilder(new ValueReferenceIndexTerm("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Mortgage", ResourceType.JAVA)) .build(); searchFor(index, query, 1, path); } }
@Test public void testIndexGuidedDecisionTableBRLFragmentActions() throws IOException, InterruptedException { //Add test files final Path path = basePath.resolve("dtable1.gdst"); final GuidedDecisionTable52 model = GuidedDecisionTableFactory.makeTableWithBRLFragmentActionCol("org.drools.workbench.screens.guided.dtable.backend.server.indexing", new ArrayList<Import>() {{ add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant")); add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Mortgage")); }}, "dtable1"); final String xml = GuidedDTXMLPersistence.getInstance().marshal(model); ioService().write(path, xml); Thread.sleep(5000); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index List<String> index = Arrays.asList(KObjectUtil.toKCluster(basePath).getClusterId()); { final Query query = new SingleTermQueryBuilder(new ValueReferenceIndexTerm("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant", ResourceType.JAVA)) .build(); searchFor(index, query, 1, path); } { final Query query = new SingleTermQueryBuilder(new ValueReferenceIndexTerm("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Mortgage", ResourceType.JAVA)) .build(); searchFor(index, query, 1, path); } }
@Test public void testIndexGuidedDecisionTableBRLFragmentConditions() throws IOException, InterruptedException { //Add test files final Path path = basePath.resolve("dtable1.gdst"); final GuidedDecisionTable52 model = GuidedDecisionTableFactory.makeTableWithBRLFragmentConditionCol("org.drools.workbench.screens.guided.dtable.backend.server.indexing", new ArrayList<Import>() {{ add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant")); add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Mortgage")); }}, "dtable1"); final String xml = GuidedDTXMLPersistence.getInstance().marshal(model); ioService().write(path, xml); Thread.sleep(7500); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index List<String> index = Arrays.asList(KObjectUtil.toKCluster(basePath).getClusterId()); { final Query query = new SingleTermQueryBuilder(new ValueReferenceIndexTerm("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant", ResourceType.JAVA)) .build(); searchFor(index, query, 1, path); } { final Query query = new SingleTermQueryBuilder(new ValueReferenceIndexTerm("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Mortgage", ResourceType.JAVA)) .build(); searchFor(index, query, 1, path); } }
@Test public void testIndexGuidedDecisionTableConditions() throws IOException, InterruptedException { //Add test files final Path path = basePath.resolve("dtable1.gdst"); final GuidedDecisionTable52 model = GuidedDecisionTableFactory.makeTableWithConditionCol("org.drools.workbench.screens.guided.dtable.backend.server.indexing", new ArrayList<Import>() {{ add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant")); add(new Import("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Mortgage")); }}, "dtable1"); final String xml = GuidedDTXMLPersistence.getInstance().marshal(model); ioService().write(path, xml); Thread.sleep(5000); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index List<String> index = Arrays.asList(KObjectUtil.toKCluster(basePath).getClusterId()); { final Query query = new SingleTermQueryBuilder(new ValueReferenceIndexTerm("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Applicant", ResourceType.JAVA)) .build(); searchFor(index, query, 1, path); } { final Query query = new SingleTermQueryBuilder(new ValueReferenceIndexTerm("org.drools.workbench.screens.guided.dtable.backend.server.indexing.classes.Mortgage", ResourceType.JAVA)) .build(); searchFor(index, query, 1, path); } }