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 @@
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>
<packaging>bundle</packaging>
<parent>
<groupId>info.kwarc.sally4</groupId>
<artifactId>sally4-osgi</artifactId>
<version>1.0.0</version>
</parent>
<groupId>info.kwarc.mmt</groupId>
<artifactId>mmt-errorview</artifactId>
<version>1.0</version>
......@@ -50,8 +57,7 @@
</execution>
</executions>
<configuration>
<mainClass>TestQueryDB</mainClass>
<classpathScope>test</classpathScope>
<mainClass>info.kwarc.mmt.errorview.SearchDB</mainClass>
<cleanupDaemonThreads>false</cleanupDaemonThreads>
<killAfter>-1</killAfter>
</configuration>
......@@ -66,8 +72,16 @@
<properties>
<scala-version>2.11.5</scala-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>
<dependencies>
<dependency>
<groupId>info.kwarc.sally4</groupId>
<artifactId>sally4-docmanager</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
......
......@@ -7,7 +7,7 @@
<link rel="stylesheet" href="static/search.css"/>
</head>
<body>
<h3>Search</h3>
<h3>Show</h3>
<div ng-controller="SearchController">
<li><input type="checkbox" ng-model="columns.id"/>row id</li>
......@@ -16,6 +16,7 @@
<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.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>
<form ng-submit="search()">
<p>maximal entries: <input type="integer" ng-model="maxNumber" size="5"/></p>
......
......@@ -7,21 +7,27 @@ angular.module('searchApp', []).controller('SearchController',
, fileName : true
, shortMsg : true
, longMsg : false };
$scope.colProps = [];
for (k in $scope.columns) if (k != 'id') { $scope.colProps.push(k)} ;
$scope.field = 'shortMsg';
$scope.results = [];
$scope.number = 0;
$scope.maxNumber = 100;
$scope.searchText = '';
$scope.query = function () { return '/' + $scope.field +
'?limit=' + $scope.maxNumber +
'&text=' + $scope.searchText;
};
$scope.search = function() {
if ($scope.searchText) {
$http.get('search?limit=' + $scope.maxNumber +
'&text=' + $scope.searchText).success(function(data) {
$http.get('search' + $scope.query()).success(function(data) {
$scope.results = data;
});
};
$scope.count();
};
$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;
});
};
......
package info.kwarc.mmt.errorview
import java.io.File
import org.slf4j.{Logger, LoggerFactory}
......
package info.kwarc.mmt.errorview
import java.util
import org.apache.camel.scala.dsl.builder.RouteBuilder
......
package info.kwarc.mmt.errorview
import java.util
import org.apache.camel.Exchange
import org.apache.camel.model.RouteDefinition
import org.apache.camel.scala.dsl.builder.RouteBuilder
import scala.collection.JavaConverters._
import scala.io.StdIn
class QueryDB extends RouteBuilder {
......@@ -36,4 +40,35 @@ class QueryDB extends RouteBuilder {
getContext.createProducerTemplate().sendBody(d, null)
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 org.apache.camel.Exchange
......@@ -7,23 +9,29 @@ import org.apache.camel.scala.dsl.builder.RouteBuilder
import org.apache.camel.util.jndi.JndiContext
import org.eclipse.jetty.server.handler.ResourceHandler
object CamelTest {
class SearchDB extends RouteBuilder {
def query2HashMap(ex: Exchange): 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
}
class MyRouteBuilder extends RouteBuilder {
("jetty:http://localhost:8383/count" transform (ex => "%" + ex.getIn.getHeader("text") + "%")) -->
"db:SELECT COUNT(*) as count FROM errors WHERE shortMsg LIKE #" marshal new DataFormatDefinition(new JacksonDataFormat())
("jetty:http://localhost:8383/search" transform query2HashMap) -->
"db:SELECT * FROM errors WHERE shortMsg LIKE :#shortMsg LIMIT :#limit" marshal new DataFormatDefinition(new JacksonDataFormat())
Table.columns.map { col =>
(("jetty:http://localhost:8383/count/" + col) transform
(ex => "%" + ex.getIn.getHeader("text") + "%")) -->
("db:SELECT COUNT(*) as count FROM errors WHERE " + col + " LIKE #") marshal
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"
}
object SearchDB {
def main(args: scala.Array[String]) {
val (context, _) = Table.initArgs(args)
val resHandler = new ResourceHandler()
......@@ -31,7 +39,7 @@ object CamelTest {
val jdni = new JndiContext()
jdni.bind("staticHandler", resHandler)
context.setJndiContext(jdni)
context.addRoutes(new MyRouteBuilder())
context.addRoutes(new SearchDB())
context.start()
}
}
package info.kwarc.mmt.errorview
import org.apache.camel.component.sql.SqlComponent
import org.apache.camel.impl.DefaultCamelContext
import org.sqlite.SQLiteDataSource
......
package info.kwarc.mmt.errorview
import java.util
import org.apache.camel.model.RouteDefinition
......
package info.kwarc.mmt.errorview
object TestQueryDB {
def main(args: scala.Array[String]): Unit = {
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