Skip to content
Snippets Groups Projects
Commit d1267ba2 authored by cmaeder's avatar cmaeder
Browse files

added package, moved and extended CamelTest to SearchDB

made a db-route per field name
added search in selectable fields
pom-stuff and BundleStart is not finished yet
parent 83d19f57
No related branches found
No related tags found
No related merge requests found
...@@ -4,6 +4,13 @@ ...@@ -4,6 +4,13 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<packaging>bundle</packaging>
<parent>
<groupId>info.kwarc.sally4</groupId>
<artifactId>sally4-osgi</artifactId>
<version>1.0.0</version>
</parent>
<groupId>info.kwarc.mmt</groupId> <groupId>info.kwarc.mmt</groupId>
<artifactId>mmt-errorview</artifactId> <artifactId>mmt-errorview</artifactId>
<version>1.0</version> <version>1.0</version>
...@@ -50,8 +57,7 @@ ...@@ -50,8 +57,7 @@
</execution> </execution>
</executions> </executions>
<configuration> <configuration>
<mainClass>TestQueryDB</mainClass> <mainClass>info.kwarc.mmt.errorview.SearchDB</mainClass>
<classpathScope>test</classpathScope>
<cleanupDaemonThreads>false</cleanupDaemonThreads> <cleanupDaemonThreads>false</cleanupDaemonThreads>
<killAfter>-1</killAfter> <killAfter>-1</killAfter>
</configuration> </configuration>
...@@ -66,8 +72,16 @@ ...@@ -66,8 +72,16 @@
<properties> <properties>
<scala-version>2.11.5</scala-version> <scala-version>2.11.5</scala-version>
<camel-version>2.14.1</camel-version> <camel-version>2.14.1</camel-version>
<bundle.export-package>info.kwarc.mmt.errorview*</bundle.export-package>
<!-- <bundle.embed-dependency>sqlite-jdbc</bundle.embed-dependency> -->
<bundle.import-package>!org.sqlite;*</bundle.import-package>
</properties> </properties>
<dependencies> <dependencies>
<dependency>
<groupId>info.kwarc.sally4</groupId>
<artifactId>sally4-docmanager</artifactId>
<version>1.0.0</version>
</dependency>
<dependency> <dependency>
<groupId>org.scala-lang</groupId> <groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId> <artifactId>scala-library</artifactId>
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<link rel="stylesheet" href="static/search.css"/> <link rel="stylesheet" href="static/search.css"/>
</head> </head>
<body> <body>
<h3>Search</h3> <h3>Show</h3>
<div ng-controller="SearchController"> <div ng-controller="SearchController">
<li><input type="checkbox" ng-model="columns.id"/>row id</li> <li><input type="checkbox" ng-model="columns.id"/>row id</li>
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
<li><input type="checkbox" ng-model="columns.errType"/>error type</li> <li><input type="checkbox" ng-model="columns.errType"/>error type</li>
<li><input type="checkbox" ng-model="columns.shortMsg"/>short message</li> <li><input type="checkbox" ng-model="columns.shortMsg"/>short message</li>
<li><input type="checkbox" ng-model="columns.longMsg"/>long message</li> <li><input type="checkbox" ng-model="columns.longMsg"/>long message</li>
<hr>search in <select ng-model="field" ng-init="shortMsg" ng-options="key for key in colProps"></select>
<p>number of records: {{number}}</p> <p>number of records: {{number}}</p>
<form ng-submit="search()"> <form ng-submit="search()">
<p>maximal entries: <input type="integer" ng-model="maxNumber" size="5"/></p> <p>maximal entries: <input type="integer" ng-model="maxNumber" size="5"/></p>
......
...@@ -7,21 +7,27 @@ angular.module('searchApp', []).controller('SearchController', ...@@ -7,21 +7,27 @@ angular.module('searchApp', []).controller('SearchController',
, fileName : true , fileName : true
, shortMsg : true , shortMsg : true
, longMsg : false }; , longMsg : false };
$scope.colProps = [];
for (k in $scope.columns) if (k != 'id') { $scope.colProps.push(k)} ;
$scope.field = 'shortMsg';
$scope.results = []; $scope.results = [];
$scope.number = 0; $scope.number = 0;
$scope.maxNumber = 100; $scope.maxNumber = 100;
$scope.searchText = ''; $scope.searchText = '';
$scope.query = function () { return '/' + $scope.field +
'?limit=' + $scope.maxNumber +
'&text=' + $scope.searchText;
};
$scope.search = function() { $scope.search = function() {
if ($scope.searchText) { if ($scope.searchText) {
$http.get('search?limit=' + $scope.maxNumber + $http.get('search' + $scope.query()).success(function(data) {
'&text=' + $scope.searchText).success(function(data) {
$scope.results = data; $scope.results = data;
}); });
}; };
$scope.count(); $scope.count();
}; };
$scope.count = function() { $scope.count = function() {
$http.get('count?text=' + $scope.searchText).success(function(data) { $http.get('count' + $scope.query()).success(function(data) {
$scope.number = data[0].count; $scope.number = data[0].count;
}); });
}; };
......
package info.kwarc.mmt.errorview
import java.io.File import java.io.File
import org.slf4j.{Logger, LoggerFactory} import org.slf4j.{Logger, LoggerFactory}
......
package info.kwarc.mmt.errorview
import java.util import java.util
import org.apache.camel.scala.dsl.builder.RouteBuilder import org.apache.camel.scala.dsl.builder.RouteBuilder
......
package info.kwarc.mmt.errorview
import java.util import java.util
import org.apache.camel.Exchange
import org.apache.camel.model.RouteDefinition import org.apache.camel.model.RouteDefinition
import org.apache.camel.scala.dsl.builder.RouteBuilder import org.apache.camel.scala.dsl.builder.RouteBuilder
import scala.collection.JavaConverters._ import scala.collection.JavaConverters._
import scala.io.StdIn
class QueryDB extends RouteBuilder { class QueryDB extends RouteBuilder {
...@@ -36,4 +40,35 @@ class QueryDB extends RouteBuilder { ...@@ -36,4 +40,35 @@ class QueryDB extends RouteBuilder {
getContext.createProducerTemplate().sendBody(d, null) getContext.createProducerTemplate().sendBody(d, null)
getContext.removeRouteDefinition(r) getContext.removeRouteDefinition(r)
} }
def processIn(ex: Exchange): Unit = {
val input = ex.getIn.getBody.toString
queryValues(QueryDB.dirPrefix, false, input, QueryDB.field)
}
// ("stream:in?scanStream=true&promptMessage=Enter field or search string: " transform processIn) --> ("log:" + this.getClass)
}
object QueryDB {
var dirPrefix = ""
var field = Table.columns(2)
def main(args: scala.Array[String]): Unit = {
val (context, dir) = Table.initArgs(args)
val dbBuilder = new PopulateDB()
val dbSearch = new QueryDB()
context.addRoutes(dbSearch)
context.start()
dirPrefix = if (dir.endsWith("/")) dir else dir + "/"
var ok = true
while (ok) {
println("Enter field or search string:")
val ln = StdIn.readLine
ok = ln != null
if (ok) {
dbSearch.queryValues(QueryDB.dirPrefix, false, ln, QueryDB.field)
dbSearch.queryValues(QueryDB.dirPrefix, true, ln, QueryDB.field)
}
}
}
} }
package info.kwarc.mmt.errorview
import java.util import java.util
import org.apache.camel.Exchange import org.apache.camel.Exchange
...@@ -7,23 +9,29 @@ import org.apache.camel.scala.dsl.builder.RouteBuilder ...@@ -7,23 +9,29 @@ import org.apache.camel.scala.dsl.builder.RouteBuilder
import org.apache.camel.util.jndi.JndiContext import org.apache.camel.util.jndi.JndiContext
import org.eclipse.jetty.server.handler.ResourceHandler import org.eclipse.jetty.server.handler.ResourceHandler
object CamelTest { class SearchDB extends RouteBuilder {
def query2HashMap(ex: Exchange): util.HashMap[String, String] = { def query2HashMap(ex: Exchange): util.HashMap[String, String] = {
val hm = new util.HashMap[String, String]() val hm = new util.HashMap[String, String]()
hm.put("shortMsg", "%" + ex.getIn.getHeader("text") + "%") hm.put("text", "%" + ex.getIn.getHeader("text") + "%")
hm.put("limit", ex.getIn.getHeader("limit").toString) hm.put("limit", ex.getIn.getHeader("limit").toString)
hm hm
} }
class MyRouteBuilder extends RouteBuilder { Table.columns.map { col =>
("jetty:http://localhost:8383/count" transform (ex => "%" + ex.getIn.getHeader("text") + "%")) --> (("jetty:http://localhost:8383/count/" + col) transform
"db:SELECT COUNT(*) as count FROM errors WHERE shortMsg LIKE #" marshal new DataFormatDefinition(new JacksonDataFormat()) (ex => "%" + ex.getIn.getHeader("text") + "%")) -->
("jetty:http://localhost:8383/search" transform query2HashMap) --> ("db:SELECT COUNT(*) as count FROM errors WHERE " + col + " LIKE #") marshal
"db:SELECT * FROM errors WHERE shortMsg LIKE :#shortMsg LIMIT :#limit" marshal new DataFormatDefinition(new JacksonDataFormat()) new DataFormatDefinition(new JacksonDataFormat())
(("jetty:http://localhost:8383/search/" + col) transform query2HashMap) -->
("db:SELECT * FROM errors WHERE " + col + " LIKE :#text LIMIT :#limit") marshal
new DataFormatDefinition(new JacksonDataFormat())
}
"jetty:http://localhost:8383/static?matchOnUriPrefix=true&handlers=#staticHandler" --> "log:a" "jetty:http://localhost:8383/static?matchOnUriPrefix=true&handlers=#staticHandler" --> "log:a"
} }
object SearchDB {
def main(args: scala.Array[String]) { def main(args: scala.Array[String]) {
val (context, _) = Table.initArgs(args) val (context, _) = Table.initArgs(args)
val resHandler = new ResourceHandler() val resHandler = new ResourceHandler()
...@@ -31,7 +39,7 @@ object CamelTest { ...@@ -31,7 +39,7 @@ object CamelTest {
val jdni = new JndiContext() val jdni = new JndiContext()
jdni.bind("staticHandler", resHandler) jdni.bind("staticHandler", resHandler)
context.setJndiContext(jdni) context.setJndiContext(jdni)
context.addRoutes(new MyRouteBuilder()) context.addRoutes(new SearchDB())
context.start() context.start()
} }
} }
package info.kwarc.mmt.errorview
import org.apache.camel.component.sql.SqlComponent import org.apache.camel.component.sql.SqlComponent
import org.apache.camel.impl.DefaultCamelContext import org.apache.camel.impl.DefaultCamelContext
import org.sqlite.SQLiteDataSource import org.sqlite.SQLiteDataSource
......
package info.kwarc.mmt.errorview
import java.util import java.util
import org.apache.camel.model.RouteDefinition import org.apache.camel.model.RouteDefinition
......
package info.kwarc.mmt.errorview
object TestQueryDB { object TestQueryDB {
def main(args: scala.Array[String]): Unit = { def main(args: scala.Array[String]): Unit = {
val (context, dir) = Table.initArgs(args) val (context, dir) = Table.initArgs(args)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment