summaryrefslogtreecommitdiff
path: root/src/YalpInputs/YalpPGSqlInput/YalpInputPluginImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/YalpInputs/YalpPGSqlInput/YalpInputPluginImpl.java')
-rw-r--r--src/YalpInputs/YalpPGSqlInput/YalpInputPluginImpl.java211
1 files changed, 143 insertions, 68 deletions
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