package fi.vincit.jmobster; /* * Copyright 2012-2013 Juha Siponen * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import fi.vincit.jmobster.processor.FieldScanMode; import fi.vincit.jmobster.processor.FieldValueConverter; import fi.vincit.jmobster.processor.ModelFactory; import fi.vincit.jmobster.processor.defaults.DefaultValidatorScanner; import fi.vincit.jmobster.processor.frameworks.backbone.BackboneModelProcessor; import fi.vincit.jmobster.processor.frameworks.backbone.ValidatorProcessor; import fi.vincit.jmobster.processor.frameworks.backbone.validator.writer.JSR303Validators; import fi.vincit.jmobster.processor.languages.JavaScriptModelCache; import fi.vincit.jmobster.processor.languages.javascript.JavaScriptContext; import fi.vincit.jmobster.processor.languages.javascript.JavaToJSValueConverter; import fi.vincit.jmobster.processor.languages.javascript.valueconverters.EnumConverter; import fi.vincit.jmobster.processor.languages.javascript.writer.JavaScriptWriterSet; import fi.vincit.jmobster.processor.languages.javascript.writer.OutputMode; import fi.vincit.jmobster.util.ConverterMode; import fi.vincit.jmobster.util.groups.GroupMode; import fi.vincit.jmobster.util.writer.StringBufferWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; @SuppressWarnings( "ALL" ) public class TestMain { public static void main(String[] args) throws IOException, InterruptedException { // Analyze models ModelFactory factory = JMobsterFactory.getModelFactoryBuilder() .setFieldScanMode(FieldScanMode.DIRECT_FIELD_ACCESS) .setFieldGroups(GroupMode.ANY_OF_REQUIRED) .setValidatorScanner(new DefaultValidatorScanner()) .build(); System.out.println("Generate test classes"); final int n = 2; Collection<Class> classesToConvert = new ArrayList<Class>(n); for( int i = 0; i < n; ++i ) { if( i % 2 == 0 ) { classesToConvert.add(DemoClasses.BeanPropertyDemo.class); } else { classesToConvert.add(DemoClasses.MyModelDto.class); } } // Setup writers JavaScriptContext context = new JavaScriptContext(new StringBufferWriter(), OutputMode.JSON); // Setup generator FieldValueConverter converter = new JavaToJSValueConverter( ConverterMode.NULL_AS_DEFAULT, EnumConverter.EnumMode.STRING, JavaToJSValueConverter.ISO_8601_DATE_TIME_TZ_PATTERN ); BackboneModelProcessor backboneModelProcessor = new BackboneModelProcessor .Builder(context) .setModelProcessors( new ValidatorProcessor.Builder() .setValidatorWriters(new JavaScriptWriterSet(JSR303Validators.get())) .build() ) .build(); backboneModelProcessor.setClearWriterBeforeProcessing(true); backboneModelProcessor.setValidatorFilter(GroupMode.ANY_OF_REQUIRED, DemoClasses.Group2.class); JavaScriptModelCache modelCache = new JavaScriptModelCache(backboneModelProcessor, factory); modelCache.addModels(classesToConvert); modelCache.addGroup(DemoClasses.Group1.class, "Group1"); modelCache.addGroup(DemoClasses.Group2.class, "Group2"); for(String modelName : modelCache.getModelNames() ) { System.out.println(modelName); } System.out.print("Press any key to start generating models"); //System.in.read(); System.out.println("Generate models"); // Generate models System.out.println("Model:\n" + modelCache.getModelByNameAndGroupClasses("MyModel")); System.out.println("Model:\n" + modelCache.getModelByNameAndGroupNames("BeanPropertyDemo", "Group1")); System.out.println("Model:\n" + modelCache.getModelByNameAndGroupClasses("BeanPropertyDemo", DemoClasses.Group2.class)); System.out.println(" - Done"); } }