From 1124d590a9db28e5a4088f8e84557469e7ee4bb2 Mon Sep 17 00:00:00 2001 From: guest Date: Wed, 24 Sep 2008 21:58:16 +0000 Subject: 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 --- .../YalpPGSqlInput/YalpInputPluginImpl.java | 211 ++++++++++++++------- 1 file changed, 143 insertions(+), 68 deletions(-) (limited to 'src/YalpInputs/YalpPGSqlInput/YalpInputPluginImpl.java') 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 @@ -59,6 +59,149 @@ public class YalpInputPluginImpl extends InputPluginInterfacePOA { } } +/* + * cuts Strings and returns an ArrayList of the cutted Strings + * + * @param str + * String to cut + * @return ArrayList + * ArrayList with cutted Strings + */ + private ArrayList stringCut (String str) { + + int i=0,j=0; + ArrayList list= new ArrayList(); + + 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 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 * @@ -100,74 +243,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 - * 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 searchWords=stringCut(media.str); - String query= new String(); - Boolean first; - for (int i=0;i resultList=new ArrayList(); - 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(); - } - */ - } - -/* - * cuts Strings and returns an ArrayList of the cutted Strings - * - * @param str - * String to cut - * @return ArrayList - * ArrayList with cutted Strings - */ - private ArrayList stringCut (String str){ - int i=0,j=0; - ArrayList list= new ArrayList(); - 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 * -- cgit v1.2.3