MediaCubeConfig bevezetese
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Mon, 23 Sep 2019 11:00:58 +0000 (11:00 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Mon, 23 Sep 2019 11:00:58 +0000 (11:00 +0000)
git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31539

15 files changed:
server/-configuration/mediacube.json [new file with mode: 0644]
server/-configuration/run-mediacube-server-user.launch
server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/BeeperControl.java [deleted file]
server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/IndexerService.java [new file with mode: 0644]
server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/ObjectMapperConfiguration.java [new file with mode: 0644]
server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/RESTController.java
server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/db/IndexerDescription.java [new file with mode: 0644]
server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/db/IndexerViewMapper.java [new file with mode: 0644]
server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/db/IndexerViewSqlProvider.java [new file with mode: 0644]
server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/lucene/LuceneIndexer.java
server/hu.user.mediacube.indexer/src/main/resources/base.xml
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MediaCubeAccount.java [new file with mode: 0644]
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MediaCubeAuthentication.java [new file with mode: 0644]
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MediaCubeConfig.java [new file with mode: 0644]
server/user.jobengine.osgi.server/src/user/jobengine/zk/util/SessionUtil.java

diff --git a/server/-configuration/mediacube.json b/server/-configuration/mediacube.json
new file mode 100644 (file)
index 0000000..4c07e5b
--- /dev/null
@@ -0,0 +1,51 @@
+{\r
+       "authentication": {\r
+               "authEnabled": true,\r
+               "adHost": "10.10.254.11",\r
+               "adNonSecurePort": 3268,\r
+               "adBaseDn": "DC=intra,DC=echotv,DC=hu",\r
+               "adAdminMap": [\r
+                        "G_ECH_U_INFORMATIKUSOK",\r
+                        "G_ECH_U_MUSZAKVEZETOK",\r
+                        "ECH-ISILON-ADMINS"\r
+               ],\r
+               "adSubmitterMap": [\r
+                       "G_ECH_U_INFORMATIKUSOK",\r
+                       "G_ECH_U_MUSZAKVEZETOK",\r
+                       "ECH-ISILON-ADMINS"\r
+               ],\r
+               "adEditorMap": [\r
+                       "G_ECH_U_INFORMATIKUSOK",\r
+                       "G_ECH_U_MUSZAKVEZETOK",\r
+                       "ECH-ISILON-ADMINS"\r
+               ],\r
+               "localAccounts": [\r
+                       {\r
+                               "user" : "user",\r
+                               "password" : "password",\r
+                               "email" : null\r
+                       },\r
+                       {\r
+                               "user" : "kuka",\r
+                               "password" : "kuka",\r
+                               "email" : null\r
+                       },\r
+                       {\r
+                               "user" : "lebony",\r
+                               "password" : "lebony",\r
+                               "email" : null\r
+                       },\r
+                       {\r
+                               "user" : "root",\r
+                               "password" : "password",\r
+                               "email" : "vasary@elgekko.net"\r
+                       }\r
+               ],\r
+               "localAdmins": "root",\r
+               "localSubmitters": "lebony",\r
+               "localEditors": "editor"\r
+       }\r
+}\r
+\r
+\r
+\r
index 7243a871aaaed1f557cedfba1c3210a1bdd8b573..8fb202ba1ba8b4c388f39a773085fc4d4fb9c634 100644 (file)
@@ -6,7 +6,7 @@
 <stringAttribute key="bootstrap" value=""/>\r
 <stringAttribute key="checked" value="[NONE]"/>\r
 <booleanAttribute key="clearConfig" value="true"/>\r
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/run-mediacube-server-slim"/>\r
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/run-mediacube-server-user"/>\r
 <booleanAttribute key="default" value="true"/>\r
 <booleanAttribute key="default_auto_start" value="false"/>\r
 <intAttribute key="default_start_level" value="4"/>\r
@@ -19,7 +19,7 @@
 <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>\r
 <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>\r
 <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory&#13;&#10;-Dorg.eclipse.epp.logging.aeri.skipReports=true &#13;&#10;-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-Djobengine.jobsteps.root=&quot;${workspace_loc}/user.jobengine.executors/config&quot;&#13;&#10;-Djobengine.jobtemplates.root=&quot;${workspace_loc}/user.jobengine.executors/jobtemplates&quot;&#13;&#10;-Djobengine.db.url=jdbc:db2://10.228.198.1:50000/mediaarc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.db.user=db2admin&#13;&#10;-Djobengine.db.password=password&#13;&#10;-Djobengine.loglevel=INFO&#13;&#10;-Dlog4j.configurationFile=&quot;${workspace_loc}/-configuration/log4j2.xml&quot;&#13;&#10;-Djobengine.jobsteps.alternate.root=&quot;${workspace_loc}/user.jobengine.executors/bin/&quot;&#13;&#10;-Djetty.home=&quot;${workspace_loc:}/-configuration/jetty&quot;&#13;&#10;-Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,,etc/user-jetty-http.xml,etc/user-jetty-https.xml&#13;&#10;-Dorg.eclipse.jetty.webapp.basetempdir=c:\temp\jetty&#13;&#10;-Djava.io.tmpdir=c:\temp\jetty&#13;&#10;-Djobengine.octopus.api.address=http://10.10.1.11/api/v1&#13;&#10;-Djobengine.octopus.api.user=mam&#13;&#10;-Djobengine.octopus.api.password=napocska&#13;&#10;-Djobengine.nosql.db.url=jdbc:db2://10.228.198.1:50000/mccache:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.nosql.db.user=db2admin&#13;&#10;-Djobengine.nosql.db.password=password&#13;&#10;-Djobengine.nosql.db.schema=test&#13;&#10;-Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl&#13;&#10;-Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.json&quot;&#13;&#10;-Djobengine.maestro.config=&quot;${workspace_loc}/-configuration/maestro.json&quot;&#13;&#10;-Djobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB;&#13;&#10;-Djobengine.nexio.db.user=sa&#13;&#10;-Djobengine.nexio.db.password=resolve&#13;&#10;-Djobengine.planair.db.url=jdbc:sqlserver://10.10.1.45;databaseName=PA_Echo;&#13;&#10;-Djobengine.planair.db.user=MAM&#13;&#10;-Djobengine.planair.db.password=Echotv.hu&#13;&#10;-Dnexio.host=192.168.0.12&#13;&#10;-Djobengine.nexio.name=testnexioclips&#13;&#10;-Dnexio.useMOSGateway=false&#13;&#10;-Dnexio.disable=true&#13;&#10;-Djobengine.octopus.rundowns.name=rundowns181026&#13;&#10;-Djobengine.octopus.storyfolders.name=storyfolders181026&#13;&#10;-Djobengine.octopus.stories.name=stories181026&#13;&#10;-Dmediacube.auth.location=&quot;${workspace_loc}/-configuration/mediacube-auth.properties&quot;"/>\r
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory&#13;&#10;-Dorg.eclipse.epp.logging.aeri.skipReports=true &#13;&#10;-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-Djobengine.jobsteps.root=&quot;${workspace_loc}/user.jobengine.executors/config&quot;&#13;&#10;-Djobengine.jobtemplates.root=&quot;${workspace_loc}/user.jobengine.executors/jobtemplates&quot;&#13;&#10;-Djobengine.db.url=jdbc:db2://10.228.198.1:50000/mediaarc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.db.user=db2admin&#13;&#10;-Djobengine.db.password=password&#13;&#10;-Djobengine.loglevel=INFO&#13;&#10;-Dlog4j.configurationFile=&quot;${workspace_loc}/-configuration/log4j2.xml&quot;&#13;&#10;-Djobengine.jobsteps.alternate.root=&quot;${workspace_loc}/user.jobengine.executors/bin/&quot;&#13;&#10;-Djetty.home=&quot;${workspace_loc:}/-configuration/jetty&quot;&#13;&#10;-Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,,etc/user-jetty-http.xml,etc/user-jetty-https.xml&#13;&#10;-Dorg.eclipse.jetty.webapp.basetempdir=c:\temp\jetty&#13;&#10;-Djava.io.tmpdir=c:\temp\jetty&#13;&#10;-Djobengine.octopus.api.address=http://10.10.1.11/api/v1&#13;&#10;-Djobengine.octopus.api.user=mam&#13;&#10;-Djobengine.octopus.api.password=napocska&#13;&#10;-Djobengine.nosql.db.url=jdbc:db2://10.228.198.1:50000/mccache:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.nosql.db.user=db2admin&#13;&#10;-Djobengine.nosql.db.password=password&#13;&#10;-Djobengine.nosql.db.schema=test&#13;&#10;-Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl&#13;&#10;-Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.json&quot;&#13;&#10;-Djobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB;&#13;&#10;-Djobengine.nexio.db.user=sa&#13;&#10;-Djobengine.nexio.db.password=resolve&#13;&#10;-Djobengine.planair.db.url=jdbc:sqlserver://10.10.1.45;databaseName=PA_Echo;&#13;&#10;-Djobengine.planair.db.user=MAM&#13;&#10;-Djobengine.planair.db.password=Echotv.hu&#13;&#10;-Dnexio.host=192.168.0.12&#13;&#10;-Djobengine.nexio.name=testnexioclips&#13;&#10;-Dnexio.useMOSGateway=false&#13;&#10;-Dnexio.disable=true&#13;&#10;-Djobengine.octopus.rundowns.name=rundowns181026&#13;&#10;-Djobengine.octopus.storyfolders.name=storyfolders181026&#13;&#10;-Djobengine.octopus.stories.name=stories181026&#13;&#10;-Dmediacube.auth.location=&quot;${workspace_loc}/-configuration/mediacube-auth.properties&quot;&#13;&#10;-Djobengine.maestro.config=&quot;${workspace_loc}/-configuration/maestro.json&quot;&#13;&#10;-Djobengine.mediacube.config=&quot;${workspace_loc}/-configuration/mediacube.json&quot;"/>\r
 <stringAttribute key="pde.version" value="3.3"/>\r
 <booleanAttribute key="show_selected_only" value="false"/>\r
 <stringAttribute key="target_bundles" value="cglib@default:default,com.fasterxml.jackson.core.jackson-annotations@default:default,com.fasterxml.jackson.core.jackson-core@default:default,com.fasterxml.jackson.core.jackson-databind@default:default,com.fasterxml.jackson.datatype.jackson-datatype-joda@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-base@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider@default:default,com.ibm.db2jcc4@default:default,com.ibm.nosql@default:default,com.microsoft.sqlserver.sqljdbc@default:default,humble.video.noarch@default:default,humble.video.windows@default:default,javax.annotation-api@default:default,javax.mail@default:default,javax.servlet-api@default:default,javax.ws.rs-api@default:default,jcifs@default:default,joda-time@default:default,org.apache.aries.spifly.dynamic.bundle@default:default,org.apache.aries.util@default:default,org.apache.commons.beanutils@default:default,org.apache.commons.collections@default:default,org.apache.commons.digester@default:default,org.apache.commons.io@default:default,org.apache.commons.lang@default:default,org.apache.commons.logging@default:default,org.apache.commons.net@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.apache.logging.log4j.api@1:true,org.apache.logging.log4j.core@default:default,org.apache.logging.log4j.slf4j-impl@default:default,org.apache.servicemix.bundles.quartz@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.util@default:default,org.eclipse.jetty.deploy@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.osgi.boot@default:true,org.eclipse.jetty.schemas@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jetty.webapp@default:default,org.eclipse.jetty.websocket.api@default:default,org.eclipse.jetty.websocket.client@default:default,org.eclipse.jetty.websocket.common@default:default,org.eclipse.jetty.websocket.server@default:default,org.eclipse.jetty.websocket.servlet@default:default,org.eclipse.jetty.xml@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.jboss.resteasy.client@default:default,org.jboss.resteasy.jaxrs@default:default,org.jmock.junit4@default:default,org.jmock@default:default,org.junit@default:default,org.mybatis.mybatis@default:default,org.objectweb.asm.commons@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,slf4j.api@default:default,slf4j.simple@default:false"/>\r
diff --git a/server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/BeeperControl.java b/server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/BeeperControl.java
deleted file mode 100644 (file)
index 9f7166f..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-package hu.user.mediacube.indexer;\r
-\r
-import static java.util.concurrent.TimeUnit.SECONDS;\r
-\r
-import java.util.concurrent.Executors;\r
-import java.util.concurrent.ScheduledExecutorService;\r
-import java.util.concurrent.ScheduledFuture;\r
-import java.util.concurrent.TimeUnit;\r
-\r
-import javax.annotation.PostConstruct;\r
-import javax.annotation.PreDestroy;\r
-\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import org.springframework.stereotype.Service;\r
-\r
-@Service\r
-public class BeeperControl {\r
-       private static Logger logger = LoggerFactory.getLogger(BeeperControl.class);\r
-       private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);\r
-       private ScheduledFuture<?> beeperHandle;\r
-\r
-       public void beepForAnHour() {\r
-\r
-               final Runnable beeper = new Runnable() {\r
-                       @Override\r
-                       public void run() {\r
-                               System.out.println("beep");\r
-                       }\r
-               };\r
-\r
-               beeperHandle = scheduler.scheduleAtFixedRate(beeper, 0, 5, SECONDS);\r
-\r
-               scheduler.schedule(new Runnable() {\r
-                       @Override\r
-                       public void run() {\r
-                               beeperHandle.cancel(true);\r
-                       }\r
-               }, 60 * 60, SECONDS);\r
-       }\r
-\r
-       @PostConstruct\r
-       public void start() {\r
-               logger.info("start");\r
-               beepForAnHour();\r
-       }\r
-\r
-       @PreDestroy\r
-       public void stop() {\r
-               if (beeperHandle != null)\r
-                       beeperHandle.cancel(true);\r
-               try {\r
-                       scheduler.awaitTermination(2, TimeUnit.SECONDS);\r
-               } catch (InterruptedException e) {\r
-                       logger.error("Scheduler termination error", e);\r
-               }\r
-               logger.info("stop");\r
-       }\r
-}\r
diff --git a/server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/IndexerService.java b/server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/IndexerService.java
new file mode 100644 (file)
index 0000000..6fdd951
--- /dev/null
@@ -0,0 +1,105 @@
+package hu.user.mediacube.indexer;\r
+\r
+import static java.util.concurrent.TimeUnit.SECONDS;\r
+\r
+import java.io.IOException;\r
+import java.util.List;\r
+import java.util.concurrent.Executors;\r
+import java.util.concurrent.ScheduledExecutorService;\r
+import java.util.concurrent.ScheduledFuture;\r
+\r
+import javax.annotation.PreDestroy;\r
+\r
+import org.apache.ibatis.logging.LogFactory;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.stereotype.Component;\r
+\r
+import hu.user.mediacube.indexer.db.IndexerDescription;\r
+import hu.user.mediacube.indexer.db.IndexerViewMapper;\r
+import hu.user.mediacube.indexer.db.MediadescriptionMapper;\r
+import hu.user.mediacube.indexer.lucene.LuceneIndexer;\r
+\r
+//@Service\r
+@Component\r
+public class IndexerService implements Runnable {\r
+       private static Logger logger = LoggerFactory.getLogger(IndexerService.class);\r
+       private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);\r
+       private ScheduledFuture<?> beeperHandle;\r
+\r
+       @Autowired\r
+       private IndexerViewMapper mapper;\r
+       @Autowired\r
+       private MediadescriptionMapper mmapper;\r
+       @Autowired\r
+       private LuceneIndexer indexer;\r
+       @Autowired\r
+       private JsonProperties config;\r
+\r
+       @Override\r
+       //periodic task\r
+       public void run() {\r
+               logger.info("Reading index");\r
+               List<IndexerDescription> indexerDescriptions = mapper.selectAll();\r
+               int i = 0;\r
+               LogFactory.useLog4J2Logging();\r
+               for (IndexerDescription indexerDescription : indexerDescriptions) {\r
+\r
+                       String description = mapper.selectDescription(indexerDescription);\r
+                       indexerDescription.setDescription(description);\r
+                       //logger.info("{}", indexerDescription);\r
+                       boolean processed = ++i % 10 == 0;\r
+                       try {\r
+                               indexer.index(indexerDescription);\r
+                               if (i == indexerDescriptions.size())\r
+                                       indexer.commit();\r
+                       } catch (IOException e) {\r
+                               logger.error("Can not create index, caused by {} : {}", e.getClass().getSimpleName(), e.getMessage(), e);\r
+                               break;\r
+                       }\r
+\r
+                       if (processed) {\r
+                               logger.info("Processed {} / {}", i, indexerDescriptions.size());\r
+                       }\r
+\r
+               }\r
+               try {\r
+                       indexer.commit();\r
+               } catch (IOException e) {\r
+                       logger.error("Commit error", e);\r
+               }\r
+       }\r
+\r
+       public void schedule() {\r
+               //              beeperHandle = scheduler.scheduleAtFixedRate(this, 0, 5, SECONDS);\r
+               beeperHandle = scheduler.schedule(this, 0, SECONDS);\r
+\r
+               //              scheduler.schedule(new Runnable() {\r
+               //                      @Override\r
+               //                      public void run() {\r
+               //                              beeperHandle.cancel(true);\r
+               //                      }\r
+               //              }, 60 * 60, SECONDS);\r
+       }\r
+\r
+       //@PostConstruct\r
+       public void start() {\r
+               logger.info("start");\r
+               //schedule();\r
+               if (config.isResetIndex())\r
+                       run();\r
+       }\r
+\r
+       @PreDestroy\r
+       public void stop() {\r
+               if (beeperHandle != null)\r
+                       beeperHandle.cancel(true);\r
+               //              try {\r
+               //                      scheduler.awaitTermination(2, TimeUnit.SECONDS);\r
+               //              } catch (InterruptedException e) {\r
+               //                      logger.error("Scheduler termination error", e);\r
+               //              }\r
+               logger.info("stop");\r
+       }\r
+}\r
diff --git a/server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/ObjectMapperConfiguration.java b/server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/ObjectMapperConfiguration.java
new file mode 100644 (file)
index 0000000..5a370df
--- /dev/null
@@ -0,0 +1,19 @@
+package hu.user.mediacube.indexer;\r
+\r
+import org.springframework.context.annotation.Bean;\r
+import org.springframework.context.annotation.Configuration;\r
+\r
+import com.fasterxml.jackson.annotation.JsonInclude.Include;\r
+import com.fasterxml.jackson.databind.DeserializationFeature;\r
+import com.fasterxml.jackson.databind.ObjectMapper;\r
+import com.fasterxml.jackson.databind.SerializationFeature;\r
+\r
+@Configuration\r
+public class ObjectMapperConfiguration {\r
+\r
+       @Bean\r
+       public ObjectMapper objectMapper() {\r
+               return new ObjectMapper().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES).disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)\r
+                               .setSerializationInclusion(Include.NON_NULL).enable(SerializationFeature.INDENT_OUTPUT);\r
+       }\r
+}\r
index 58fcafcccdf11a405e907f2c7abf7d7bd918217d..a5dcf215f74e347b74e35acee8196e5c1bdadb9b 100644 (file)
@@ -1,54 +1,23 @@
 package hu.user.mediacube.indexer;\r
 \r
-import java.time.ZoneId;\r
-import java.time.ZonedDateTime;\r
-import java.util.Date;\r
 import java.util.List;\r
 \r
-import org.apache.lucene.document.Document;\r
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
 import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.http.HttpStatus;\r
+import org.springframework.http.ResponseEntity;\r
 import org.springframework.web.bind.annotation.GetMapping;\r
 import org.springframework.web.bind.annotation.PathVariable;\r
 import org.springframework.web.bind.annotation.RequestMapping;\r
 import org.springframework.web.bind.annotation.RestController;\r
 \r
+import hu.user.mediacube.indexer.db.IndexerDescription;\r
 import hu.user.mediacube.indexer.lucene.LuceneIndexer;\r
 \r
 @RestController\r
 @RequestMapping("rest")\r
 public class RESTController {\r
-       public class CustomResponse {\r
-               private int age;\r
-               private String name;\r
-               private ZonedDateTime date;\r
-\r
-               public int getAge() {\r
-                       return age;\r
-               }\r
-\r
-               public ZonedDateTime getDate() {\r
-                       return date;\r
-               }\r
-\r
-               public String getName() {\r
-                       return name;\r
-               }\r
-\r
-               public void setAge(int age) {\r
-                       this.age = age;\r
-               }\r
-\r
-               public void setDate(ZonedDateTime date) {\r
-                       this.date = date;\r
-               }\r
-\r
-               public void setName(String name) {\r
-                       this.name = name;\r
-               }\r
-\r
-       }\r
 \r
        private static Logger logger = LoggerFactory.getLogger(RESTController.class);\r
 \r
@@ -69,19 +38,29 @@ public class RESTController {
        GreetingService greetingService;\r
        @Autowired\r
        private LuceneIndexer indexer;\r
+       @Autowired\r
+       private IndexerService indexerService;\r
 \r
-       @GetMapping(path = "/{id}", produces = "application/json")\r
-       public CustomResponse getBook(@PathVariable int id) {\r
-               logger.info("getBook");\r
-               CustomResponse result = new CustomResponse();\r
-               result.setAge(id);\r
-               result.setName(greetingService.greet(id));\r
-               result.setDate(ZonedDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault()));\r
-               return result;\r
+       @GetMapping(path = "/create", produces = "application/json")\r
+       public ResponseEntity<String> create() {\r
+               indexerService.run();\r
+               return new ResponseEntity<>("Index complete", HttpStatus.OK);\r
+       }\r
+\r
+       @GetMapping(path = "/reset", produces = "application/json")\r
+       public ResponseEntity<String> reset() {\r
+               try {\r
+                       indexer.reset();\r
+               } catch (Exception e) {\r
+                       logger.error("Indexer reset error", e);\r
+                       return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);\r
+               }\r
+               return new ResponseEntity<>("Reset complete", HttpStatus.OK);\r
        }\r
 \r
        @GetMapping(path = "/search/{queryString}/{skipRecords}/{takeRecords}", produces = "application/json")\r
-       public List<Document> search(@PathVariable String queryString, @PathVariable int skipRecords, @PathVariable int takeRecords) {\r
+       public List<IndexerDescription> search(@PathVariable String queryString, @PathVariable int skipRecords, @PathVariable int takeRecords) {\r
                return indexer.search(queryString, skipRecords, takeRecords);\r
        }\r
+\r
 }
\ No newline at end of file
diff --git a/server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/db/IndexerDescription.java b/server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/db/IndexerDescription.java
new file mode 100644 (file)
index 0000000..8ee8591
--- /dev/null
@@ -0,0 +1,185 @@
+package hu.user.mediacube.indexer.db;\r
+\r
+import java.sql.Timestamp;\r
+import java.util.Iterator;\r
+\r
+import org.apache.lucene.document.Document;\r
+import org.apache.lucene.index.IndexableField;\r
+\r
+public class IndexerDescription {\r
+       private Long itemId;\r
+       private Long mediaId;\r
+       private String itemTitle;\r
+       private String mediaTitle;\r
+       private String mediaHouseId;\r
+       private Timestamp archived;\r
+       private String description;\r
+       private Long length;\r
+       private Long mediaItemTypeId;\r
+       private String mediaItemTypeName;\r
+       private Long mediaFileId;\r
+       private String mediaFileHouseId;\r
+       private Integer mediaFileCount;\r
+\r
+       public IndexerDescription() {\r
+\r
+       }\r
+\r
+       public IndexerDescription(Document doc, String highlight) {\r
+               description = highlight;\r
+               Iterator<IndexableField> iterator = doc.iterator();\r
+               while (iterator.hasNext()) {\r
+                       IndexableField field = iterator.next();\r
+                       switch (field.name()) {\r
+                       case "itemId": {\r
+                               itemId = (Long) field.numericValue();\r
+                               break;\r
+                       }\r
+                       case "mediaId": {\r
+                               mediaId = (Long) field.numericValue();\r
+                               break;\r
+                       }\r
+                       case "itemTitle": {\r
+                               itemTitle = field.stringValue();\r
+                               break;\r
+                       }\r
+                       case "mediaTitle": {\r
+                               mediaTitle = field.stringValue();\r
+                               break;\r
+                       }\r
+                       case "mediaHouseId": {\r
+                               mediaHouseId = field.stringValue();\r
+                               break;\r
+                       }\r
+                       case "length": {\r
+                               length = (Long) field.numericValue();\r
+                               break;\r
+                       }\r
+                       case "mediaItemTypeId": {\r
+                               mediaItemTypeId = (Long) field.numericValue();\r
+                               break;\r
+                       }\r
+                       case "mediaItemTypeName": {\r
+                               mediaItemTypeName = field.stringValue();\r
+                               break;\r
+                       }\r
+                       case "mediaFileId": {\r
+                               mediaFileId = (Long) field.numericValue();\r
+                               break;\r
+                       }\r
+                       case "mediaFileHouseId": {\r
+                               mediaFileHouseId = field.stringValue();\r
+                               break;\r
+                       }\r
+                       case "mediaFileCount": {\r
+                               mediaFileCount = (Integer) field.numericValue();\r
+                               break;\r
+                       }\r
+                       }\r
+               }\r
+       }\r
+\r
+       public Timestamp getArchived() {\r
+               return archived;\r
+       }\r
+\r
+       public String getDescription() {\r
+               return description;\r
+       }\r
+\r
+       public Long getItemId() {\r
+               return itemId;\r
+       }\r
+\r
+       public String getItemTitle() {\r
+               return itemTitle;\r
+       }\r
+\r
+       public Long getLength() {\r
+               return length;\r
+       }\r
+\r
+       public Integer getMediaFileCount() {\r
+               return mediaFileCount;\r
+       }\r
+\r
+       public String getMediaFileHouseId() {\r
+               return mediaFileHouseId;\r
+       }\r
+\r
+       public Long getMediaFileId() {\r
+               return mediaFileId;\r
+       }\r
+\r
+       public String getMediaHouseId() {\r
+               return mediaHouseId;\r
+       }\r
+\r
+       public Long getMediaId() {\r
+               return mediaId;\r
+       }\r
+\r
+       public Long getMediaItemTypeId() {\r
+               return mediaItemTypeId;\r
+       }\r
+\r
+       public String getMediaItemTypeName() {\r
+               return mediaItemTypeName;\r
+       }\r
+\r
+       public String getMediaTitle() {\r
+               return mediaTitle;\r
+       }\r
+\r
+       public void setArchived(Timestamp archived) {\r
+               this.archived = archived;\r
+       }\r
+\r
+       public void setDescription(String description) {\r
+               this.description = description;\r
+       }\r
+\r
+       public void setItemId(Long itemId) {\r
+               this.itemId = itemId;\r
+       }\r
+\r
+       public void setItemTitle(String itemTitle) {\r
+               this.itemTitle = itemTitle;\r
+       }\r
+\r
+       public void setLength(Long length) {\r
+               this.length = length;\r
+       }\r
+\r
+       public void setMediaFileCount(Integer mediaFileCount) {\r
+               this.mediaFileCount = mediaFileCount;\r
+       }\r
+\r
+       public void setMediaFileHouseId(String mediaFileHouseId) {\r
+               this.mediaFileHouseId = mediaFileHouseId;\r
+       }\r
+\r
+       public void setMediaFileId(Long mediaFileId) {\r
+               this.mediaFileId = mediaFileId;\r
+       }\r
+\r
+       public void setMediaHouseId(String mediaHouseId) {\r
+               this.mediaHouseId = mediaHouseId;\r
+       }\r
+\r
+       public void setMediaId(Long mediaId) {\r
+               this.mediaId = mediaId;\r
+       }\r
+\r
+       public void setMediaItemTypeId(Long mediaItemTypeId) {\r
+               this.mediaItemTypeId = mediaItemTypeId;\r
+       }\r
+\r
+       public void setMediaItemTypeName(String mediaItemTypeName) {\r
+               this.mediaItemTypeName = mediaItemTypeName;\r
+       }\r
+\r
+       public void setMediaTitle(String mediaTitle) {\r
+               this.mediaTitle = mediaTitle;\r
+       }\r
+}\r
diff --git a/server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/db/IndexerViewMapper.java b/server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/db/IndexerViewMapper.java
new file mode 100644 (file)
index 0000000..c98d08b
--- /dev/null
@@ -0,0 +1,34 @@
+package hu.user.mediacube.indexer.db;\r
+\r
+import java.util.List;\r
+\r
+import org.apache.ibatis.annotations.Mapper;\r
+import org.apache.ibatis.annotations.Result;\r
+import org.apache.ibatis.annotations.Results;\r
+import org.apache.ibatis.annotations.SelectProvider;\r
+import org.apache.ibatis.type.JdbcType;\r
+\r
+//SELECT * FROM VW_INDEXER FETCH FIRST 10000 ROWS ONLY\r
+\r
+@Mapper\r
+public interface IndexerViewMapper {\r
+\r
+       @SelectProvider(type = IndexerViewSqlProvider.class, method = "selectAll")\r
+       @Results({ @Result(column = "ITEMID", property = "itemId", jdbcType = JdbcType.BIGINT),\r
+                       @Result(column = "ITEMTITLE", property = "itemTitle", jdbcType = JdbcType.VARCHAR),\r
+                       @Result(column = "MEDIAID", property = "mediaId", jdbcType = JdbcType.BIGINT),\r
+                       @Result(column = "MEDIATITLE", property = "mediaTitle", jdbcType = JdbcType.VARCHAR),\r
+                       @Result(column = "MEDIAHOUSEID", property = "mediaHouseId", jdbcType = JdbcType.VARCHAR),\r
+                       @Result(column = "ARCHIVED", property = "archived", jdbcType = JdbcType.TIMESTAMP),\r
+                       @Result(column = "LENGTH", property = "length", jdbcType = JdbcType.BIGINT),\r
+                       @Result(column = "MEDIAITEMTYPEID", property = "mediaItemTypeId", jdbcType = JdbcType.BIGINT),\r
+                       @Result(column = "MEDIAITEMTYPENAME", property = "mediaItemTypeName", jdbcType = JdbcType.VARCHAR),\r
+                       @Result(column = "MEDIAFILEID", property = "mediaFileId", jdbcType = JdbcType.BIGINT),\r
+                       @Result(column = "MEDIAFILEHOUSEID", property = "mediaFileHouseId", jdbcType = JdbcType.VARCHAR),\r
+                       @Result(column = "MEDIAFILECOUNT", property = "mediaFileCount", jdbcType = JdbcType.INTEGER), })\r
+       List<IndexerDescription> selectAll();\r
+\r
+       @SelectProvider(type = IndexerViewSqlProvider.class, method = "selectDescription")\r
+       String selectDescription(IndexerDescription description);\r
+\r
+}
\ No newline at end of file
diff --git a/server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/db/IndexerViewSqlProvider.java b/server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/db/IndexerViewSqlProvider.java
new file mode 100644 (file)
index 0000000..4d455f6
--- /dev/null
@@ -0,0 +1,32 @@
+package hu.user.mediacube.indexer.db;\r
+\r
+import java.util.Map;\r
+\r
+import org.apache.ibatis.jdbc.SQL;\r
+\r
+public class IndexerViewSqlProvider {\r
+\r
+       private Long getLongParam(Map<String, Object> parameter, String name) {\r
+               return parameter.containsKey(name) ? (Long) parameter.get(name) : null;\r
+       }\r
+\r
+       public String selectAll() {\r
+               SQL sql = new SQL();\r
+               sql.SELECT("*");\r
+               sql.FROM("VW_INDEXER").FETCH_FIRST_ROWS_ONLY(100);\r
+               return sql.toString();\r
+       }\r
+\r
+       public String selectDescription(IndexerDescription description) {\r
+               //              Long itemId = getLongParam(parameter, "itemId");\r
+               //              Long mediaId = getLongParam(parameter, "mediaId");\r
+               //              Long mediaFileId = getLongParam(parameter, "mediaFileId");\r
+\r
+               SQL sql = new SQL();\r
+               sql.SELECT("FULLDESC(itemId, mediaId, mediaFileId)");\r
+               sql.FROM("VW_ITEMS");\r
+               sql.WHERE("itemId = #{itemId,jdbcType=BIGINT}").AND().WHERE("mediaId = #{mediaId,jdbcType=BIGINT}").AND()\r
+                               .WHERE("mediaFileId = #{mediaFileId,jdbcType=BIGINT}");\r
+               return sql.toString();\r
+       }\r
+}\r
index d14d62ef67cca8ae132368ed506b3e168e889c74..db21aece74497432dd4b10bab59cd83796f8cda0 100644 (file)
@@ -12,8 +12,10 @@ import javax.annotation.PreDestroy;
 import org.apache.lucene.analysis.standard.StandardAnalyzer;\r
 import org.apache.lucene.document.Document;\r
 import org.apache.lucene.document.Field.Store;\r
-import org.apache.lucene.document.LongPoint;\r
+import org.apache.lucene.document.SortedDocValuesField;\r
 import org.apache.lucene.document.SortedNumericDocValuesField;\r
+import org.apache.lucene.document.StoredField;\r
+import org.apache.lucene.document.StringField;\r
 import org.apache.lucene.document.TextField;\r
 import org.apache.lucene.index.DirectoryReader;\r
 import org.apache.lucene.index.IndexReader;\r
@@ -24,12 +26,13 @@ import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Query;\r
 import org.apache.lucene.search.ScoreDoc;\r
 import org.apache.lucene.search.Sort;\r
+import org.apache.lucene.search.SortField;\r
 import org.apache.lucene.search.SortField.Type;\r
-import org.apache.lucene.search.SortedNumericSortField;\r
 import org.apache.lucene.search.TopDocs;\r
 import org.apache.lucene.search.uhighlight.UnifiedHighlighter;\r
 import org.apache.lucene.store.Directory;\r
 import org.apache.lucene.store.SimpleFSDirectory;\r
+import org.apache.lucene.util.BytesRef;\r
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
 import org.springframework.beans.factory.annotation.Autowired;\r
@@ -37,33 +40,73 @@ import org.springframework.stereotype.Component;
 import org.springframework.util.FileSystemUtils;\r
 \r
 import hu.user.mediacube.indexer.JsonProperties;\r
-import hu.user.mediacube.indexer.db.Mediadescription;\r
+import hu.user.mediacube.indexer.db.IndexerDescription;\r
 \r
 @Component\r
 public class LuceneIndexer {\r
        private static Logger logger = LoggerFactory.getLogger(LuceneIndexer.class);\r
        private static final String DESCRIPTION = "description";\r
+       //      private static Field[] fields;\r
+       //      static {\r
+       //              FieldType TYPE = new FieldType();\r
+       //              TYPE.setDocValuesType(DocValuesType.SORTED_NUMERIC);\r
+       //              TYPE.freeze();\r
+       //\r
+       //              fields={new Field("itemId","",TYPE)};\r
+       //      }\r
        @Autowired\r
        private JsonProperties config;\r
        private Directory directoryIndex;\r
        private IndexWriterConfig indexWriterConfig;\r
        private IndexWriter indexWritter;\r
        private StandardAnalyzer analyzer;\r
+       private Path indexPath;\r
 \r
-       public void index(Mediadescription mediadescription, boolean commit) throws IOException {\r
+       private void addInt(Document document, String name, Integer value) {\r
+               document.add(new StoredField(name, value));\r
+               document.add(new SortedNumericDocValuesField(name, value));\r
+       }\r
+\r
+       private void addLong(Document document, String name, Long value) {\r
+               document.add(new StoredField(name, value));\r
+               document.add(new SortedNumericDocValuesField(name, value));\r
+       }\r
+\r
+       private void addString(Document document, String name, String value) {\r
+               document.add(new StringField(name, value, Store.YES));\r
+               document.add(new SortedDocValuesField(name, new BytesRef(value)));\r
+       }\r
+\r
+       public void commit() throws IOException {\r
+               indexWritter.commit();\r
+       }\r
+\r
+       public void index(IndexerDescription indexerDescription) throws IOException {\r
                Document document = new Document();\r
-               document.add(new SortedNumericDocValuesField("id", mediadescription.getId()));\r
-               document.add(new LongPoint("itemid", mediadescription.getItemid()));\r
-               document.add(new LongPoint("mediaid", mediadescription.getMediaid()));\r
-               document.add(new LongPoint("mediafileid", mediadescription.getMediafileid()));\r
-               document.add(new TextField(DESCRIPTION, mediadescription.getDescription(), Store.YES));\r
+               addLong(document, "itemId", indexerDescription.getItemId());\r
+               addString(document, "itemTitle", indexerDescription.getItemTitle());\r
+               addLong(document, "mediaId", indexerDescription.getMediaId());\r
+               addLong(document, "mediaFileId", indexerDescription.getMediaFileId());\r
+               addString(document, "mediaTitle", indexerDescription.getMediaTitle());\r
+               addString(document, "mediaHouseId", indexerDescription.getMediaHouseId());\r
+               addString(document, "mediaItemTypeName", indexerDescription.getMediaItemTypeName());\r
+               addLong(document, "mediaItemTypeId", indexerDescription.getMediaItemTypeId());\r
+               addInt(document, "mediaFileCount", indexerDescription.getMediaFileCount());\r
+               addString(document, "mediaFileHouseId", indexerDescription.getMediaFileHouseId());\r
+               addString(document, "archived", indexerDescription.getArchived().toString());\r
+               addLong(document, "length", indexerDescription.getLength());\r
+               document.add(new TextField(DESCRIPTION, indexerDescription.getDescription(), Store.YES));\r
                indexWritter.addDocument(document);\r
-               if (commit)\r
-                       indexWritter.commit();\r
        }\r
 \r
-       public List<Document> search(String queryString, int skipRecords, int takeRecords) {\r
-               List<Document> ret = new ArrayList<Document>();\r
+       public void reset() throws Exception {\r
+               stop();\r
+               FileSystemUtils.deleteRecursively(indexPath);\r
+               start();\r
+       }\r
+\r
+       public List<IndexerDescription> search(String queryString, int skipRecords, int takeRecords) {\r
+               List<IndexerDescription> ret = new ArrayList<>();\r
                IndexReader indexReader = null;\r
                IndexSearcher searcher = null;\r
                try {\r
@@ -71,21 +114,26 @@ public class LuceneIndexer {
                        searcher = new IndexSearcher(indexReader);\r
 \r
                        Query query = new QueryParser(DESCRIPTION, analyzer).parse(queryString);\r
+                       //                      SortField sort = new SortedNumericSortField("id", Type.LONG, true);\r
+                       SortField sort = new SortField("mediaTitle", Type.STRING, false);\r
 \r
-                       TopDocs results = searcher.search(query, skipRecords + takeRecords, new Sort(new SortedNumericSortField("id", Type.LONG, true)));\r
+                       //mediahouseid,mediatitle, mediafilehouseid,archived,hossz\r
+                       TopDocs results = searcher.search(query, skipRecords + takeRecords, new Sort(sort));\r
                        //TopDocs results = searcher.search(query, skipRecords + takeRecords);\r
                        ScoreDoc[] scoreDocs = results.scoreDocs;\r
                        UnifiedHighlighter highlighter = new UnifiedHighlighter(searcher, analyzer);\r
                        //highlighter.setFormatter(formatter);\r
+                       logger.info("Total result: {}", results.totalHits);\r
                        for (int i = skipRecords; i < results.totalHits.value; i++) {\r
                                if (i > (skipRecords + takeRecords) - 1) {\r
                                        break;\r
                                }\r
                                Document doc = searcher.doc(scoreDocs[i].doc);\r
-                               ret.add(doc);\r
-\r
                                String[] fragments = highlighter.highlight(DESCRIPTION, query, results);\r
-                               logger.info("Item " + doc.getValues("id")[0] + " : " + fragments[0]);\r
+                               String highlight = fragments[0];\r
+                               ret.add(new IndexerDescription(doc, highlight));\r
+\r
+                               logger.info("Item " + doc.get("mediaTitle") + " : " + fragments[0]);\r
                        }\r
                } catch (Exception e) {\r
                        logger.error("Search", e);\r
@@ -103,12 +151,11 @@ public class LuceneIndexer {
        @PostConstruct\r
        public void start() throws Exception {\r
                try {\r
-                       Path path = Paths.get(config.getIndexLocation());\r
-                       if (config.isDropIndex())\r
-                               FileSystemUtils.deleteRecursively(path);\r
-                       directoryIndex = new SimpleFSDirectory(path);\r
                        analyzer = new StandardAnalyzer();\r
                        indexWriterConfig = new IndexWriterConfig(analyzer);\r
+\r
+                       indexPath = Paths.get(config.getIndexLocation());\r
+                       directoryIndex = new SimpleFSDirectory(indexPath);\r
                        indexWritter = new IndexWriter(directoryIndex, indexWriterConfig);\r
                } catch (Exception e) {\r
                        logger.error("Could not create indexer", e);\r
index af37d27b94d81205a476bc48d63796af9017af36..cc7cb51b4e4e5147b503cdb25265eada70d8aa85 100644 (file)
@@ -6,7 +6,7 @@ Base logback configuration provided for compatibility with Spring Boot 1.1
 
 <included>
        <include resource="defaults.xml" />
-       <property name="LOG_FILE" value="/opt/indexer/logs/indexer.log}"/>
+       <property name="LOG_FILE" value="/opt/indexer/logs/indexer.log"/>
        <include resource="console-appender.xml" />
        <include resource="file-appender.xml" />
        <root level="INFO">
diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MediaCubeAccount.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MediaCubeAccount.java
new file mode 100644 (file)
index 0000000..efdfea4
--- /dev/null
@@ -0,0 +1,32 @@
+package user.jobengine.zk.model;\r
+\r
+public class MediaCubeAccount {\r
+       private String user;\r
+       private String password;\r
+       private String email;\r
+\r
+       public String getEmail() {\r
+               return email;\r
+       }\r
+\r
+       public String getPassword() {\r
+               return password;\r
+       }\r
+\r
+       public String getUser() {\r
+               return user;\r
+       }\r
+\r
+       public void setEmail(String email) {\r
+               this.email = email;\r
+       }\r
+\r
+       public void setPassword(String password) {\r
+               this.password = password;\r
+       }\r
+\r
+       public void setUser(String user) {\r
+               this.user = user;\r
+       }\r
+\r
+}\r
diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MediaCubeAuthentication.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MediaCubeAuthentication.java
new file mode 100644 (file)
index 0000000..9802422
--- /dev/null
@@ -0,0 +1,106 @@
+package user.jobengine.zk.model;\r
+\r
+import java.util.List;\r
+\r
+public class MediaCubeAuthentication {\r
+       private boolean authEnabled;\r
+       private String adHost;\r
+       private int adNonSecurePort;\r
+       private String adBaseDn;\r
+       private List<String> adAdminMap;\r
+       private List<String> adSubmitterMap;\r
+       private List<String> adEditorMap;\r
+       private List<MediaCubeAccount> localAccounts;\r
+       private String localAdmins;\r
+       private String localSubmitters;\r
+       private String localEditors;\r
+\r
+       public List<String> getAdAdminMap() {\r
+               return adAdminMap;\r
+       }\r
+\r
+       public String getAdBaseDn() {\r
+               return adBaseDn;\r
+       }\r
+\r
+       public List<String> getAdEditorMap() {\r
+               return adEditorMap;\r
+       }\r
+\r
+       public String getAdHost() {\r
+               return adHost;\r
+       }\r
+\r
+       public int getAdNonSecurePort() {\r
+               return adNonSecurePort;\r
+       }\r
+\r
+       public List<String> getAdSubmitterMap() {\r
+               return adSubmitterMap;\r
+       }\r
+\r
+       public List<MediaCubeAccount> getLocalAccounts() {\r
+               return localAccounts;\r
+       }\r
+\r
+       public String getLocalAdmins() {\r
+               return localAdmins;\r
+       }\r
+\r
+       public String getLocalEditors() {\r
+               return localEditors;\r
+       }\r
+\r
+       public String getLocalSubmitters() {\r
+               return localSubmitters;\r
+       }\r
+\r
+       public boolean isAuthEnabled() {\r
+               return authEnabled;\r
+       }\r
+\r
+       public void setAdAdminMap(List<String> adAdminMap) {\r
+               this.adAdminMap = adAdminMap;\r
+       }\r
+\r
+       public void setAdBaseDn(String adBaseDn) {\r
+               this.adBaseDn = adBaseDn;\r
+       }\r
+\r
+       public void setAdEditorMap(List<String> adEditorMap) {\r
+               this.adEditorMap = adEditorMap;\r
+       }\r
+\r
+       public void setAdHost(String adHost) {\r
+               this.adHost = adHost;\r
+       }\r
+\r
+       public void setAdNonSecurePort(int adNonSecurePort) {\r
+               this.adNonSecurePort = adNonSecurePort;\r
+       }\r
+\r
+       public void setAdSubmitterMap(List<String> adSubmitterMap) {\r
+               this.adSubmitterMap = adSubmitterMap;\r
+       }\r
+\r
+       public void setAuthEnabled(boolean authEnabled) {\r
+               this.authEnabled = authEnabled;\r
+       }\r
+\r
+       public void setLocalAccounts(List<MediaCubeAccount> localAccounts) {\r
+               this.localAccounts = localAccounts;\r
+       }\r
+\r
+       public void setLocalAdmins(String localAdmins) {\r
+               this.localAdmins = localAdmins;\r
+       }\r
+\r
+       public void setLocalEditors(String localEditors) {\r
+               this.localEditors = localEditors;\r
+       }\r
+\r
+       public void setLocalSubmitters(String localSubmitters) {\r
+               this.localSubmitters = localSubmitters;\r
+       }\r
+\r
+}\r
diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MediaCubeConfig.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MediaCubeConfig.java
new file mode 100644 (file)
index 0000000..d56b5e7
--- /dev/null
@@ -0,0 +1,14 @@
+package user.jobengine.zk.model;\r
+\r
+public class MediaCubeConfig {\r
+       private MediaCubeAuthentication authentication;\r
+\r
+       public MediaCubeAuthentication getAuthentication() {\r
+               return authentication;\r
+       }\r
+\r
+       public void setAuthentication(MediaCubeAuthentication authentication) {\r
+               this.authentication = authentication;\r
+       }\r
+\r
+}\r
index 32a96217af0d32217fe420ea6c153a784839b927..f1e58d646c0a17fcf8d46b774b2d527c1161bca6 100644 (file)
@@ -22,12 +22,17 @@ import com.ibm.nosql.json.api.BasicDBList;
 import com.ibm.nosql.json.api.BasicDBObject;\r
 import com.ibm.nosql.json.api.QueryBuilder;\r
 \r
+import user.commons.config.JSONConfig;\r
 import user.commons.nosql.NoSQLUtils;\r
 import user.jobengine.server.IJobChangedListener;\r
 import user.jobengine.server.JobEngine;\r
 import user.jobengine.zk.model.IndexModel;\r
+import user.jobengine.zk.model.MaestroConfig;\r
+import user.jobengine.zk.model.MediaCubeConfig;\r
 \r
 public class SessionUtil {\r
+       private static final String JOBENGINE_MEDIACUBE_CONFIG = "jobengine.mediacube.config";\r
+       private static final String JOBENGINE_MAESTRO_CONFIG = "jobengine.maestro.config";\r
        private static final String SEARCH_FILTER = "searchFilter";\r
        private static final String COLUMN_ORDERS = "columnOrders";\r
        private static final String PAGE_SIZE = "pageSize";\r
@@ -85,15 +90,42 @@ public class SessionUtil {
        }\r
 \r
        private static Properties getConfiguration() {\r
+\r
+               MediaCubeConfig mediaCubeConfig = getMediaCubeConfig();\r
                Properties cfg = new Properties();\r
                try (InputStream is = new FileInputStream(System.getProperty(AUTH_LOCATION))) {\r
                        cfg.load(is);\r
                } catch (Exception e) {\r
                        logger.catching(e);\r
                }\r
+\r
                return cfg;\r
        }\r
 \r
+       public static MaestroConfig getMaestroConfig() {\r
+               MaestroConfig result = null;\r
+               try {\r
+                       result = (MaestroConfig) getAttribute(JOBENGINE_MAESTRO_CONFIG);\r
+                       if (result == null) {\r
+                               result = JSONConfig.read(JOBENGINE_MAESTRO_CONFIG, MaestroConfig.class);\r
+                               setAttribute(JOBENGINE_MAESTRO_CONFIG, result);\r
+                       }\r
+               } catch (Exception e) {\r
+                       logger.catching(e);\r
+               }\r
+               return result;\r
+       }\r
+\r
+       public static MediaCubeConfig getMediaCubeConfig() {\r
+               MediaCubeConfig result = null;\r
+               try {\r
+                       result = JSONConfig.read(JOBENGINE_MEDIACUBE_CONFIG, MediaCubeConfig.class);\r
+               } catch (Exception e) {\r
+                       logger.catching(e);\r
+               }\r
+               return result;\r
+       }\r
+\r
        static public String getQueryParameter(String key) {\r
                String result = null;\r
                HttpServletRequest request = (HttpServletRequest) Executions.getCurrent().getNativeRequest();\r