From 7d7163740141ec179ae8797da41faf77d74c1aeb Mon Sep 17 00:00:00 2001 From: Bon-Yong Lee Date: Mon, 26 Nov 2012 11:29:30 +0900 Subject: [PATCH] [Title] Add template with cli [Desc.] [Issue] --- .../src/org/tizen/cli/command/AbstractCommand.java | 13 ++++ .../src/org/tizen/cli/command/CreateTemplate.java | 64 +++++++++++++++++++ .../src/org/tizen/cli/command/PluginConstants.java | 17 +++++ .../src/org/tizen/cli/command/SearchTemplate.java | 72 ++++++++++++++++++++++ 4 files changed, 166 insertions(+) create mode 100755 org.tizen.cli/src/org/tizen/cli/command/AbstractCommand.java create mode 100755 org.tizen.cli/src/org/tizen/cli/command/CreateTemplate.java create mode 100755 org.tizen.cli/src/org/tizen/cli/command/PluginConstants.java create mode 100755 org.tizen.cli/src/org/tizen/cli/command/SearchTemplate.java diff --git a/org.tizen.cli/src/org/tizen/cli/command/AbstractCommand.java b/org.tizen.cli/src/org/tizen/cli/command/AbstractCommand.java new file mode 100755 index 0000000..d2a91fa --- /dev/null +++ b/org.tizen.cli/src/org/tizen/cli/command/AbstractCommand.java @@ -0,0 +1,13 @@ +package org.tizen.cli.command; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +abstract public class +AbstractCommand +implements CommandWithParameter +{ + + protected Logger logger = LoggerFactory.getLogger( getClass() ); + +} diff --git a/org.tizen.cli/src/org/tizen/cli/command/CreateTemplate.java b/org.tizen.cli/src/org/tizen/cli/command/CreateTemplate.java new file mode 100755 index 0000000..002edef --- /dev/null +++ b/org.tizen.cli/src/org/tizen/cli/command/CreateTemplate.java @@ -0,0 +1,64 @@ +package org.tizen.cli.command; + +import java.io.IOException; +import java.net.URL; + +import org.tizen.cli.util.TemplateModelProvider; +import org.tizen.common.core.command.ExecutionContext; +import org.tizen.common.verrari.Realm; +import org.tizen.common.verrari.RealmFactory; +import org.tizen.common.verrari.Template; +import org.tizen.common.verrari.TemplateContext; +import org.tizen.common.verrari.TemplateException; +import org.tizen.common.verrari.storage.FileStorage; + +public class CreateTemplate +extends AbstractCommand +implements CommandWithParameter +{ + + @Override + public void process( + final ExecutionContext context, + final String[] args + ) throws IOException, TemplateException + { + if ( null == args || 0 == args.length ) + { + context.getPrompter().error( "One more template id required" ); + return ; + } + Realm realm = (Realm) context.getValue( PluginConstants.REALM ); + + if ( null == realm ) + { + final URL url = new URL( "file:///home/bylee/.install/tizen-cli/template/config.json" ); + realm = RealmFactory.getInstance().create( url ); + } + + final FileStorage storage = new FileStorage( context.getFileHandler() ); + + final TemplateModelProvider models = new TemplateModelProvider( context ); + + TemplateContext.set( models ); + try + { + for ( final String arg : args ) + { + logger.debug( "Arg :{}", arg ); + final Template template = realm.getTemplate( arg ); + + logger.debug( "Template :{}", template ); + + template.template( models, storage ); + + } + } + finally + { + TemplateContext.clear(); + } + + } + +} diff --git a/org.tizen.cli/src/org/tizen/cli/command/PluginConstants.java b/org.tizen.cli/src/org/tizen/cli/command/PluginConstants.java new file mode 100755 index 0000000..84356c6 --- /dev/null +++ b/org.tizen.cli/src/org/tizen/cli/command/PluginConstants.java @@ -0,0 +1,17 @@ +package org.tizen.cli.command; + +public class PluginConstants +{ + + public static final String OBSERVER = "pic.file.observer"; + public static final String PLUGINS = "pic.server.plugin"; + + public static final String REALM = "pic.template.realm"; + + + public static final String PROP_DOCBASE = "document.base"; + + public static final String PROP_CWD = "user.dir"; + + +} diff --git a/org.tizen.cli/src/org/tizen/cli/command/SearchTemplate.java b/org.tizen.cli/src/org/tizen/cli/command/SearchTemplate.java new file mode 100755 index 0000000..614be66 --- /dev/null +++ b/org.tizen.cli/src/org/tizen/cli/command/SearchTemplate.java @@ -0,0 +1,72 @@ +package org.tizen.cli.command; + +import static org.tizen.common.util.CollectionUtil.isEmpty; +import static org.tizen.common.util.StringUtil.isEmpty; + +import java.util.Collection; + +import org.tizen.common.core.command.ExecutionContext; +import org.tizen.common.verrari.AttributeContainer; +import org.tizen.common.verrari.Condition; +import org.tizen.common.verrari.Condition.Operation; +import org.tizen.common.verrari.Realm; +import org.tizen.common.verrari.SearchableRealm; +import org.tizen.common.verrari.template.TemplateConstants; + +public class SearchTemplate +extends AbstractCommand +implements CommandWithParameter +{ + + @Override + public void process( + final ExecutionContext context, + final String[] args + ) + throws Exception + { + if ( null == args || 0 == args.length ) + { + context.getPrompter().error( "A keyword required" ); + return ; + } + final Realm realm = (Realm) context.getValue( PluginConstants.REALM ); + + if ( !( realm instanceof SearchableRealm ) ) + { + context.getPrompter().error( "Search unsupported realm" ); + return ; + } + + final SearchableRealm searchable = (SearchableRealm) realm; + final String keyword = args[0]; + final Collection templates = searchable.search( + new Condition( Operation.Contains, "keyword", keyword ) + ); + + if ( isEmpty( templates ) ) + { + context.getPrompter().notify( "No template with '" + keyword + "'" ); + return ; + } + for ( final AttributeContainer template : templates ) + { + final StringBuilder buffer = new StringBuilder(); + final String name = template.getAttribute( TemplateConstants.ATTR_NAME ); + final String desc = template.getAttribute( TemplateConstants.ATTR_DESCRIPTION ); + buffer.append( name ); + buffer.append( " - " ); + if ( isEmpty( desc ) ) + { + buffer.append( "undescribed" ); + } + else + { + buffer.append( desc ); + } + + context.getPrompter().notify( buffer.toString() ); + } + } + +} -- 2.7.4