diff options
| author | guest <guest@f059d3a0-6783-47b7-97ff-1fe0bbf25129> | 2008-09-24 21:58:16 +0000 |
|---|---|---|
| committer | guest <guest@f059d3a0-6783-47b7-97ff-1fe0bbf25129> | 2008-09-24 21:58:16 +0000 |
| commit | 1124d590a9db28e5a4088f8e84557469e7ee4bb2 (patch) | |
| tree | a61b20ed778ada22c475462587757098b098feab | |
| parent | ab841adc06acd2a6ff161ea866579674ce5ff99e (diff) | |
it's now possible to make a search request in the client, then the pgsqlinput plugin gets proper (incomplete) results out of the database, then everything crashes on the way back, cause the search result isn't yet set correctly
git-svn-id: http://manut.eu/svn/yalp/trunk@6 f059d3a0-6783-47b7-97ff-1fe0bbf25129
| -rw-r--r-- | build.xml | 6 | ||||
| -rw-r--r-- | src/YalpInputs/YalpPGSqlInput/YalpInputPluginImpl.java | 211 | ||||
| -rw-r--r-- | src/YalpInputs/YalpPGSqlInput/db-design-backup.sql | 139 | ||||
| -rw-r--r-- | src/YalpServer/InputPluginHandler.java | 2 |
4 files changed, 219 insertions, 139 deletions
@@ -23,7 +23,7 @@ <property name="build" value="build/"/>
<property name="lib" value="lib/"/>
- <property name="serverLibs" value="lib/log4j-1.2.15.jar"/>
+ <property name="log4jLibs" value="lib/log4j-1.2.15.jar"/>
<property name="vlctelnetLibs" value="lib/commons-net-1.4.1.jar"/>
<property name="swtLibs" value="lib/swt.jar"/>
<property name="dbLibs" value="lib/postgresql-8.1-404.jdbc3.jar"/>
@@ -59,7 +59,7 @@ <manifest>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Main-Class" value="YalpServer.YalpServer"/>
- <attribute name="Class-Path" value="${serverLibs}"/>
+ <attribute name="Class-Path" value="${log4jLibs}"/>
</manifest>
</jar>
</target>
@@ -99,7 +99,7 @@ <manifest>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Main-Class" value="YalpInputs.YalpPGSqlInput.YalpPGSqlInput"/>
- <attribute name="Class-Path" value="${dbLibs}"/>
+ <attribute name="Class-Path" value="${dbLibs} ${log4jLibs}"/>
</manifest>
</jar>
</target>
diff --git a/src/YalpInputs/YalpPGSqlInput/YalpInputPluginImpl.java b/src/YalpInputs/YalpPGSqlInput/YalpInputPluginImpl.java index 4d0a602..573c587 100644 --- a/src/YalpInputs/YalpPGSqlInput/YalpInputPluginImpl.java +++ b/src/YalpInputs/YalpPGSqlInput/YalpInputPluginImpl.java @@ -60,6 +60,149 @@ public class YalpInputPluginImpl extends InputPluginInterfacePOA { } /* + * cuts Strings and returns an ArrayList of the cutted Strings + * + * @param str + * String to cut + * @return ArrayList<String> + * ArrayList with cutted Strings + */ + private ArrayList <String> stringCut (String str) { + + int i=0,j=0; + ArrayList<String> list= new ArrayList<String>(); + + while( j != -1 ) { + j=str.indexOf(" ", i); + if (j!=-1) { + list.add(new String (str.substring(i,j))); + i=j+1; + } else + list.add( new String( str.substring( i, str.length() ) ) ); + } + return list; + } + + public void search( String str, MediaType[] types, MediasHolder result, + YalpErrorHolder err) { + + logger.debug("search("+str+")"); + + ArrayList <String> searchWords = stringCut(str); + String query = new String(); + Boolean first, doIntersect, sound, video, image; + doIntersect = false; + sound = false; + video = false; + image = false; + + for( int i = 0; i < types.length; i++ ) + { + switch( types[i].value() ) + { + case MediaType._SOUND: + sound = true; + break; + case MediaType._VIDEO: + video = true; + break; + case MediaType._IMAGE: + image = true; + break; + } + } + + //for( int i = 0; i < searchWords.size(); i++ ) { + for( String pattern : searchWords ) { + first = true; + + if( doIntersect ) + query = query+") intersect "; + else + doIntersect = true; + + query += "select * from \"Medias\" where ("; + + if( sound ) { + first = false; + query += "\"type\" = 'a' "; + } + if( image ) { + if( first ) + first = false; + else + query += "or "; + query += "\"type\" = 'i' "; + } + if( video ) { + if( first ) + first = false; + else + query += "or "; + query += "\"type\" = 'v' "; + } + if( !first ) + query += ") and ("; + + query += "\"name\" Ilike '%"; + query += pattern; + query += "%' or \"tags\" Ilike '%"; + query += pattern; + /* + query += "%' or \"album\" Ilike '%"; + query += pattern; + query += "%'or \"year\" Ilike '%"; + query += pattern; + query += "%'or \"category\" Ilike '%"; + query += pattern; + */ + query += "%'"; + } + query += ")order by \"id\";"; + + logger.debug("sending SQL request: "+query); + + try { + + Statement stat = con.createStatement(); + ResultSet sqlResult = stat.executeQuery(query); + + System.out.println("found: "); + while( sqlResult.next() ) { + System.out.print(sqlResult.getString(3)+": "); + System.out.print(sqlResult.getString(4)+"\t| "); + System.out.println(sqlResult.getString(6)); + /* + result.add( + new Result( sqlResult.getInt(1), + sqlResult.getString(2), + ---> + result.getString(3), + result.getString(4), + result.getString(5), + result.getString(6), + result.getString(7), + result.getString(8), + result.getInt(9), + result.getInt(10), + result.getString(11), + result.getInt(12), + result.getString(13), + result.getString(14), + result.getString(15) ) ); + */ + } + System.out.println(); + + } catch( SQLException e ) { + System.out.println("Exception in PGSqlInput.search: "+e); + } + + } + +// == REIMPLEMENTATION NEEDED : == // + +/* * submits changes to yalpMediaDatabase * * @param change @@ -101,74 +244,6 @@ public class YalpInputPluginImpl extends InputPluginInterfacePOA { } /* - * returns an ArrayList of Results which are matching to the commited Find object - * - * @param media - * Object which describes search criterias - * @return ArrayList<Result> - * List with Results matching search criteria - */ - public void search(String str, MediaType[] types, MediasHolder result, YalpErrorHolder err) { - System.out.println("juhu: searching for: "+str); - /* t.b.d. alter this to new database design - try{ - ArrayList <String > searchWords=stringCut(media.str); - String query= new String(); - Boolean first; - for (int i=0;i<searchWords.size();i++){ - first=true; - if (i!=0)query = query+") intersect "; - query= query+"select * from \"medien\" where ("; - if (media.audio){ - first=false; - query=query+"\"type\" = 'audio' "; - } - if (media.video){ - if (first)first=false; - else query=query+"or "; - query=query+"\"type\" = 'video' "; - } - if (!first)query=query+") and ("; - query=query+"\"title\" Ilike '%"+searchWords.get(i)+"%' or \"author\" Ilike '%"+searchWords.get(i)+"%' or \"album\" Ilike '%"+searchWords.get(i)+"%'or \"year\" Ilike '%"+searchWords.get(i)+"%'or \"category\" Ilike '%"+searchWords.get(i)+"%'"; - } - query=query+")order by \"id\";"; - - ArrayList<Result> resultList=new ArrayList<Result>(); - Statement stat= con.createStatement(); - ResultSet result=stat.executeQuery(query); - while(result.next()){ - resultList.add( new Result(result.getInt(1),result.getString(2),result.getString(3),result.getString(4),result.getString(5),result.getString(6),result.getString(7),result.getString(8),result.getInt(9),result.getInt(10),result.getString(11),result.getInt(12),result.getString(13),result.getString(14),result.getString(15))); - } - return resultList; - }catch(SQLException e){ - System.out.println("Exception in PGSqlInput.search: "+e); - return new ArrayList<Result>(); - } - */ - } - -/* - * cuts Strings and returns an ArrayList of the cutted Strings - * - * @param str - * String to cut - * @return ArrayList<String> - * ArrayList with cutted Strings - */ - private ArrayList <String> stringCut (String str){ - int i=0,j=0; - ArrayList<String> list= new ArrayList<String>(); - while(j!=-1){ - j=str.indexOf(" ",i); - if (j!=-1){ - list.add(new String (str.substring(i,j))); - i=j+1; - } else list.add(new String (str.substring(i,str.length()))); - } - return list; - } - -/* * returns number of medias in database * * @return String diff --git a/src/YalpInputs/YalpPGSqlInput/db-design-backup.sql b/src/YalpInputs/YalpPGSqlInput/db-design-backup.sql index 0ab8d4d..bbdd0d9 100644 --- a/src/YalpInputs/YalpPGSqlInput/db-design-backup.sql +++ b/src/YalpInputs/YalpPGSqlInput/db-design-backup.sql @@ -2,14 +2,14 @@ -- PostgreSQL database dump -- --- Started on 2008-09-23 20:48:41 CEST +-- Started on 2008-09-25 00:44:25 CEST SET client_encoding = 'UNICODE'; SET check_function_bodies = false; SET client_min_messages = warning; -- --- TOC entry 1518 (class 0 OID 0) +-- TOC entry 1520 (class 0 OID 0) -- Dependencies: 5 -- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: postgres -- @@ -24,14 +24,14 @@ SET default_tablespace = ''; SET default_with_oids = false; -- --- TOC entry 1170 (class 1259 OID 17306) --- Dependencies: 1491 5 +-- TOC entry 1172 (class 1259 OID 17306) +-- Dependencies: 1493 5 -- Name: IntProperties; Type: TABLE; Schema: public; Owner: yalp; Tablespace: -- CREATE TABLE "IntProperties" ( id bigserial NOT NULL, - description "char", + description text, value integer ); @@ -39,8 +39,8 @@ CREATE TABLE "IntProperties" ( ALTER TABLE public."IntProperties" OWNER TO yalp; -- --- TOC entry 1520 (class 0 OID 0) --- Dependencies: 1169 +-- TOC entry 1522 (class 0 OID 0) +-- Dependencies: 1171 -- Name: IntProperties_id_seq; Type: SEQUENCE SET; Schema: public; Owner: yalp -- @@ -48,35 +48,36 @@ SELECT pg_catalog.setval(pg_catalog.pg_get_serial_sequence('"IntProperties"', 'i -- --- TOC entry 1172 (class 1259 OID 17313) --- Dependencies: 1492 5 +-- TOC entry 1174 (class 1259 OID 17313) +-- Dependencies: 1494 5 -- Name: Medias; Type: TABLE; Schema: public; Owner: yalp; Tablespace: -- CREATE TABLE "Medias" ( id bigserial NOT NULL, "type" character(1), - path "char", - "fileName" "char", - tags "char"[], - duration "char" + path text, + "fileName" text, + duration text, + name text, + tags text ); ALTER TABLE public."Medias" OWNER TO yalp; -- --- TOC entry 1521 (class 0 OID 0) --- Dependencies: 1171 +-- TOC entry 1523 (class 0 OID 0) +-- Dependencies: 1173 -- Name: Medias_id_seq; Type: SEQUENCE SET; Schema: public; Owner: yalp -- -SELECT pg_catalog.setval(pg_catalog.pg_get_serial_sequence('"Medias"', 'id'), 1, false); +SELECT pg_catalog.setval(pg_catalog.pg_get_serial_sequence('"Medias"', 'id'), 2, true); -- --- TOC entry 1174 (class 1259 OID 17323) --- Dependencies: 1493 1494 1495 5 +-- TOC entry 1176 (class 1259 OID 17323) +-- Dependencies: 1495 1496 1497 5 -- Name: PropertyConnector; Type: TABLE; Schema: public; Owner: yalp; Tablespace: -- @@ -91,23 +92,23 @@ CREATE TABLE "PropertyConnector" ( ALTER TABLE public."PropertyConnector" OWNER TO yalp; -- --- TOC entry 1168 (class 1259 OID 17294) --- Dependencies: 1490 5 +-- TOC entry 1170 (class 1259 OID 17294) +-- Dependencies: 1492 5 -- Name: StringProperties; Type: TABLE; Schema: public; Owner: yalp; Tablespace: -- CREATE TABLE "StringProperties" ( id bigserial NOT NULL, - description "char", - value "char" + description text, + value text ); ALTER TABLE public."StringProperties" OWNER TO yalp; -- --- TOC entry 1522 (class 0 OID 0) --- Dependencies: 1167 +-- TOC entry 1524 (class 0 OID 0) +-- Dependencies: 1169 -- Name: StringProperties_id_seq; Type: SEQUENCE SET; Schema: public; Owner: yalp -- @@ -115,24 +116,24 @@ SELECT pg_catalog.setval(pg_catalog.pg_get_serial_sequence('"StringProperties"', -- --- TOC entry 1165 (class 1259 OID 17269) --- Dependencies: 1488 1489 5 +-- TOC entry 1167 (class 1259 OID 17269) +-- Dependencies: 1490 1491 5 -- Name: Users; Type: TABLE; Schema: public; Owner: yalp; Tablespace: -- CREATE TABLE "Users" ( - name "char"[] NOT NULL, - "realName" name[], "level" integer DEFAULT 1 NOT NULL, - id bigserial NOT NULL + id bigserial NOT NULL, + name text NOT NULL, + "realName" text ); ALTER TABLE public."Users" OWNER TO yalp; -- --- TOC entry 1523 (class 0 OID 0) --- Dependencies: 1166 +-- TOC entry 1525 (class 0 OID 0) +-- Dependencies: 1168 -- Name: Users_id_seq; Type: SEQUENCE SET; Schema: public; Owner: yalp -- @@ -140,8 +141,8 @@ SELECT pg_catalog.setval(pg_catalog.pg_get_serial_sequence('"Users"', 'id'), 1, -- --- TOC entry 1524 (class 0 OID 0) --- Dependencies: 1173 +-- TOC entry 1526 (class 0 OID 0) +-- Dependencies: 1175 -- Name: propertyConnector_id_seq; Type: SEQUENCE SET; Schema: public; Owner: yalp -- @@ -149,8 +150,8 @@ SELECT pg_catalog.setval(pg_catalog.pg_get_serial_sequence('"PropertyConnector"' -- --- TOC entry 1513 (class 0 OID 17306) --- Dependencies: 1170 +-- TOC entry 1515 (class 0 OID 17306) +-- Dependencies: 1172 -- Data for Name: IntProperties; Type: TABLE DATA; Schema: public; Owner: yalp -- @@ -159,18 +160,20 @@ COPY "IntProperties" (id, description, value) FROM stdin; -- --- TOC entry 1514 (class 0 OID 17313) --- Dependencies: 1172 +-- TOC entry 1516 (class 0 OID 17313) +-- Dependencies: 1174 -- Data for Name: Medias; Type: TABLE DATA; Schema: public; Owner: yalp -- -COPY "Medias" (id, "type", path, "fileName", tags, duration) FROM stdin; +COPY "Medias" (id, "type", path, "fileName", duration, name, tags) FROM stdin; +1 v /home/manut test.avi 5:55 huhu hihi +2 s /home/manut test.mp3 2:22 chavenger - jung und frech live, hiltensweiler, hihi \. -- --- TOC entry 1515 (class 0 OID 17323) --- Dependencies: 1174 +-- TOC entry 1517 (class 0 OID 17323) +-- Dependencies: 1176 -- Data for Name: PropertyConnector; Type: TABLE DATA; Schema: public; Owner: yalp -- @@ -179,8 +182,8 @@ COPY "PropertyConnector" ("mediaId", "stringPropertyId", "intPropertyId", id) FR -- --- TOC entry 1512 (class 0 OID 17294) --- Dependencies: 1168 +-- TOC entry 1514 (class 0 OID 17294) +-- Dependencies: 1170 -- Data for Name: StringProperties; Type: TABLE DATA; Schema: public; Owner: yalp -- @@ -189,18 +192,18 @@ COPY "StringProperties" (id, description, value) FROM stdin; -- --- TOC entry 1511 (class 0 OID 17269) --- Dependencies: 1165 +-- TOC entry 1513 (class 0 OID 17269) +-- Dependencies: 1167 -- Data for Name: Users; Type: TABLE DATA; Schema: public; Owner: yalp -- -COPY "Users" (name, "realName", "level", id) FROM stdin; +COPY "Users" ("level", id, name, "realName") FROM stdin; \. -- --- TOC entry 1507 (class 16386 OID 17329) --- Dependencies: 1174 1174 +-- TOC entry 1509 (class 16386 OID 17329) +-- Dependencies: 1176 1176 -- Name: key_id_con; Type: CONSTRAINT; Schema: public; Owner: yalp; Tablespace: -- @@ -211,8 +214,8 @@ ALTER TABLE ONLY "PropertyConnector" ALTER INDEX public.key_id_con OWNER TO yalp; -- --- TOC entry 1497 (class 16386 OID 17291) --- Dependencies: 1165 1165 +-- TOC entry 1499 (class 16386 OID 17291) +-- Dependencies: 1167 1167 -- Name: key_is_id; Type: CONSTRAINT; Schema: public; Owner: yalp; Tablespace: -- @@ -223,8 +226,8 @@ ALTER TABLE ONLY "Users" ALTER INDEX public.key_is_id OWNER TO yalp; -- --- TOC entry 1501 (class 16386 OID 17298) --- Dependencies: 1168 1168 +-- TOC entry 1503 (class 16386 OID 17298) +-- Dependencies: 1170 1170 -- Name: prim_key_id; Type: CONSTRAINT; Schema: public; Owner: yalp; Tablespace: -- @@ -235,8 +238,8 @@ ALTER TABLE ONLY "StringProperties" ALTER INDEX public.prim_key_id OWNER TO yalp; -- --- TOC entry 1503 (class 16386 OID 17310) --- Dependencies: 1170 1170 +-- TOC entry 1505 (class 16386 OID 17310) +-- Dependencies: 1172 1172 -- Name: prim_key_int_id; Type: CONSTRAINT; Schema: public; Owner: yalp; Tablespace: -- @@ -247,8 +250,8 @@ ALTER TABLE ONLY "IntProperties" ALTER INDEX public.prim_key_int_id OWNER TO yalp; -- --- TOC entry 1505 (class 16386 OID 17320) --- Dependencies: 1172 1172 +-- TOC entry 1507 (class 16386 OID 17320) +-- Dependencies: 1174 1174 -- Name: prim_key_m_id; Type: CONSTRAINT; Schema: public; Owner: yalp; Tablespace: -- @@ -259,20 +262,20 @@ ALTER TABLE ONLY "Medias" ALTER INDEX public.prim_key_m_id OWNER TO yalp; -- --- TOC entry 1499 (class 16386 OID 17278) --- Dependencies: 1165 1165 --- Name: user_name_unique; Type: CONSTRAINT; Schema: public; Owner: yalp; Tablespace: +-- TOC entry 1501 (class 16386 OID 17405) +-- Dependencies: 1167 1167 +-- Name: username_is_unique; Type: CONSTRAINT; Schema: public; Owner: yalp; Tablespace: -- ALTER TABLE ONLY "Users" - ADD CONSTRAINT user_name_unique UNIQUE (name); + ADD CONSTRAINT username_is_unique UNIQUE (name); -ALTER INDEX public.user_name_unique OWNER TO yalp; +ALTER INDEX public.username_is_unique OWNER TO yalp; -- --- TOC entry 1509 (class 16386 OID 17334) --- Dependencies: 1174 1170 1502 +-- TOC entry 1511 (class 16386 OID 17334) +-- Dependencies: 1176 1172 1504 -- Name: int_prop; Type: FK CONSTRAINT; Schema: public; Owner: yalp -- @@ -281,8 +284,8 @@ ALTER TABLE ONLY "PropertyConnector" -- --- TOC entry 1508 (class 16386 OID 17330) --- Dependencies: 1174 1172 1504 +-- TOC entry 1510 (class 16386 OID 17330) +-- Dependencies: 1176 1174 1506 -- Name: media_prop; Type: FK CONSTRAINT; Schema: public; Owner: yalp -- @@ -291,8 +294,8 @@ ALTER TABLE ONLY "PropertyConnector" -- --- TOC entry 1510 (class 16386 OID 17338) --- Dependencies: 1174 1168 1500 +-- TOC entry 1512 (class 16386 OID 17338) +-- Dependencies: 1176 1170 1502 -- Name: string_prop; Type: FK CONSTRAINT; Schema: public; Owner: yalp -- @@ -301,7 +304,7 @@ ALTER TABLE ONLY "PropertyConnector" -- --- TOC entry 1519 (class 0 OID 0) +-- TOC entry 1521 (class 0 OID 0) -- Dependencies: 5 -- Name: public; Type: ACL; Schema: -; Owner: postgres -- @@ -313,7 +316,7 @@ GRANT ALL ON SCHEMA public TO yalp; GRANT ALL ON SCHEMA public TO PUBLIC; --- Completed on 2008-09-23 20:48:41 CEST +-- Completed on 2008-09-25 00:44:25 CEST -- -- PostgreSQL database dump complete diff --git a/src/YalpServer/InputPluginHandler.java b/src/YalpServer/InputPluginHandler.java index 746204a..40c6208 100644 --- a/src/YalpServer/InputPluginHandler.java +++ b/src/YalpServer/InputPluginHandler.java @@ -32,6 +32,8 @@ public class InputPluginHandler { } /* + * @todo sort / priorization of search results + * * @todo maybe each request in own thread * timeouts, maximum number of results ... */ |
