diff --git a/webinterface/build.gradle b/webinterface/build.gradle index 8996e1e..c1b04a1 100644 --- a/webinterface/build.gradle +++ b/webinterface/build.gradle @@ -1,5 +1,5 @@ group = 'asys' -version = '0.13-SNAPSHOT' +version = '0.14-SNAPSHOT' buildscript { repositories { diff --git a/webinterface/src/main/java/asys/webinterface/Activator.java b/webinterface/src/main/java/asys/webinterface/Activator.java index a6b0d8f..8b33668 100644 --- a/webinterface/src/main/java/asys/webinterface/Activator.java +++ b/webinterface/src/main/java/asys/webinterface/Activator.java @@ -4,6 +4,8 @@ */ package asys.webinterface; +import asys.webinterface.api.HttpReqResp; +import asys.webinterface.api.WebModule; import asys.webinterface.api.Webinterface; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; @@ -11,6 +13,8 @@ import org.osgi.framework.ServiceRegistration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.*; + public class Activator implements BundleActivator { private final Logger logger = LoggerFactory.getLogger(Activator.class); private ServiceRegistration serviceMainMenu; @@ -19,8 +23,7 @@ public class Activator implements BundleActivator { @Override public void start(BundleContext context) throws Exception { WebinterfaceImpl webinterface = new WebinterfaceImpl(); - webinterface.addMainMenuItem("modules", "Модули", "#"); - webinterface.addJavascript("modules", "/static/module.js"); + webinterface.addModule(createSelfModule()); logger.trace("Register service: {}", Webinterface.class); serviceMainMenu = context.registerService(Webinterface.class, webinterface, null); @@ -29,6 +32,36 @@ public class Activator implements BundleActivator { webServer.start(8778); } + private WebModule createSelfModule() { + return new WebModule() { + @Override + public String getName() { + return "modules"; + } + + @Override + public List getStylesheetsLinks() { + return Collections.emptyList(); + } + + @Override + public List getJavaScriptLinks() { + return Collections.singletonList("/static/module.js"); + } + + @Override + public Map getMainMenuItems() { + return new HashMap(){{ + this.put("Модули", "#"); + }}; + } + + @Override + public void handle(HttpReqResp httpReqResp) { + } + }; + } + @Override public void stop(BundleContext context) throws Exception { webServer.stop(); diff --git a/webinterface/src/main/java/asys/webinterface/IndexHandler.java b/webinterface/src/main/java/asys/webinterface/IndexHandler.java index a663c0c..dc40b0f 100644 --- a/webinterface/src/main/java/asys/webinterface/IndexHandler.java +++ b/webinterface/src/main/java/asys/webinterface/IndexHandler.java @@ -19,8 +19,8 @@ public class IndexHandler implements HttpHandler { try { InputStream inputStream = getClass().getResourceAsStream("/index.html"); htmlTemplate = IOUtils.toString(inputStream, "UTF-8") - .replace("<{moduleScript}>", webinterface.javascriptToTags()) - .replace("<{moduleStylesheet}>", webinterface.stylesheetToTags()); + .replace("<{moduleScript}>", webinterface.javascriptToTags("modules")) + .replace("<{moduleStylesheet}>", webinterface.stylesheetToTags("modules")); } catch (Exception e) { throw new RuntimeException("Error load htmlTemplate", e); } diff --git a/webinterface/src/main/java/asys/webinterface/WebinterfaceImpl.java b/webinterface/src/main/java/asys/webinterface/WebinterfaceImpl.java index ca678f7..5815587 100644 --- a/webinterface/src/main/java/asys/webinterface/WebinterfaceImpl.java +++ b/webinterface/src/main/java/asys/webinterface/WebinterfaceImpl.java @@ -4,83 +4,32 @@ */ package asys.webinterface; +import asys.webinterface.api.WebModule; import asys.webinterface.api.Webinterface; import java.util.*; public class WebinterfaceImpl implements Webinterface { - // moduleName, links - private Map> javascripts = new HashMap<>(); - private Map> stylesheets = new HashMap<>(); - private Map> menuItems = new HashMap<>(); + private Map webModules = new HashMap<>(); - public class MainMenuItem { - public String title, link; - public MainMenuItem(String title, String link) { - this.title = title; - this.link = link; - } + @Override + public void addModule(WebModule webModule) { + webModules.put(webModule.getName(), webModule); } @Override - public void addJavascript(String moduleName, String link) { - List list; - if (javascripts.containsKey(moduleName)) { - list = javascripts.get(moduleName); - } else { - list = new ArrayList<>(); - javascripts.put(moduleName, list); - } - list.add(link); - } - - @Override - public void removeJavascript(String moduleName) { - javascripts.remove(moduleName); - } - - @Override - public void addStylesheet(String moduleName, String link) { - List list; - if (stylesheets.containsKey(moduleName)) { - list = stylesheets.get(moduleName); - } else { - list = new ArrayList<>(); - stylesheets.put(moduleName, list); - } - list.add(link); - } - - @Override - public void removeStylesheet(String moduleName) { - stylesheets.remove(moduleName); - } - - @Override - public void addMainMenuItem(String moduleName, String title, String link) { - List list; - if (menuItems.containsKey(moduleName)) { - list = menuItems.get(moduleName); - } else { - list = new ArrayList<>(); - menuItems.put(moduleName, list); - } - list.add(new MainMenuItem(title, link)); - } - - @Override - public void removeMainMenuItems(String moduleName) { - menuItems.remove(moduleName); + public void removeModule(String moduleName) { + webModules.remove(moduleName); } public String mainMenuItemsToReactJS() { StringJoiner sj = new StringJoiner(","); - for(List listItems : menuItems.values()) { - for (MainMenuItem item : listItems) { + for (WebModule webModule : webModules.values()) { + for(Map.Entry entry : webModule.getMainMenuItems().entrySet()) { sj.add(String.format( "ce(MainMenuItem, {title: '%s', href: '%s'})", - item.title.replace("'","\\'"), item.link.replace("'","\\'") + entry.getKey().replace("'","\\'"), entry.getValue().replace("'","\\'") )); } } @@ -88,25 +37,23 @@ public class WebinterfaceImpl implements Webinterface { return sj.toString(); } - public String javascriptToTags() { + public String javascriptToTags(String moduleName) { StringJoiner sj = new StringJoiner("\n"); - for (List items : javascripts.values()) { - for (String link : items) { - sj.add(String.format("", link)); - } + WebModule webModule = webModules.get(moduleName); + for (String link : webModule.getJavaScriptLinks()) { + sj.add(String.format("", link)); } return sj.toString(); } - public String stylesheetToTags() { + public String stylesheetToTags(String moduleName) { StringJoiner sj = new StringJoiner("\n"); - for (List items : javascripts.values()) { - for (String link : items) { - sj.add(String.format("", link)); - } + WebModule webModule = webModules.get(moduleName); + for (String link : webModule.getJavaScriptLinks()) { + sj.add(String.format("", link)); } return sj.toString(); diff --git a/webinterface/src/main/java/asys/webinterface/api/HttpReqResp.java b/webinterface/src/main/java/asys/webinterface/api/HttpReqResp.java new file mode 100644 index 0000000..2b03604 --- /dev/null +++ b/webinterface/src/main/java/asys/webinterface/api/HttpReqResp.java @@ -0,0 +1,8 @@ +/* + * DmitriyMX + * 2017-03-15 + */ +package asys.webinterface.api; + +public interface HttpReqResp { +} diff --git a/webinterface/src/main/java/asys/webinterface/api/WebModule.java b/webinterface/src/main/java/asys/webinterface/api/WebModule.java new file mode 100644 index 0000000..9c8c315 --- /dev/null +++ b/webinterface/src/main/java/asys/webinterface/api/WebModule.java @@ -0,0 +1,16 @@ +/* + * DmitriyMX + * 2017-03-15 + */ +package asys.webinterface.api; + +import java.util.List; +import java.util.Map; + +public interface WebModule { + String getName(); + List getStylesheetsLinks(); + List getJavaScriptLinks(); + Map getMainMenuItems(); + void handle(HttpReqResp httpReqResp); +} diff --git a/webinterface/src/main/java/asys/webinterface/api/Webinterface.java b/webinterface/src/main/java/asys/webinterface/api/Webinterface.java index 5582158..ee60230 100644 --- a/webinterface/src/main/java/asys/webinterface/api/Webinterface.java +++ b/webinterface/src/main/java/asys/webinterface/api/Webinterface.java @@ -5,12 +5,6 @@ package asys.webinterface.api; public interface Webinterface { - void addJavascript(String moduleName, String link); - void removeJavascript(String moduleName); - - void addStylesheet(String moduleName, String link); - void removeStylesheet(String moduleName); - - void addMainMenuItem(String moduleName, String title, String link); - void removeMainMenuItems(String moduleName); + void addModule(WebModule webModule); + void removeModule(String moduleName); }