QueryParser.java :  » Portal » Open-Portal » com » sun » portal » search » Java Open Source

Java Open Source » Portal » Open Portal 
Open Portal » com » sun » portal » search » QueryParser.java
package com.sun.portal.search;

import java.util.*;
import java.lang.*;


/**
 * QueryParser class produces the scope for
 * advanced search queries
 */
public class QueryParser {
   StringBuffer scope= null;
   String scopeString="";

   public void QueryParser() {
   }

   public void setQueryParams(String wordsOp, String wordsVal, String nowordsVal, String authorOp, String authorVal, String titleOp, String titleVal, String urlOp, String urlVal, String expiresOp, String expiresVal, String lmodifiedOp, String lmodifiedVal, String comments) {

      String r_op = "";
      scope = new StringBuffer();

      if (!wordsVal.equals("")) {
   r_op = getRightOperator(wordsVal);
   scope.append("("+r_op+")");
   scope.append(" <AND> ");
      }
      if (!nowordsVal.equals("")) {
   r_op = getRightOperator(nowordsVal);
   scope.append(" <NOT> (" + r_op +")");
   scope.append(" <AND> ");
      }
      if (!urlVal.equals("")) {
   r_op = getRightOperator(urlVal);
   parse("Url", urlOp, r_op);
      }
      if (!authorVal.equals("")) {
   r_op = getRightOperator(authorVal);
   parse("Author", authorOp, r_op);
      }
      if (!titleVal.equals("")) {
   r_op = getRightOperator(titleVal);
   parse("Title", titleOp, r_op);
      }
      if (!expiresVal.equals("")) {
   r_op = getRightOperator(expiresVal);
   parse("Expires", expiresOp, r_op);
      }
      if (!lmodifiedVal.equals("")) {
   r_op = getRightOperator(lmodifiedVal);
   parse("Last-Modified", lmodifiedOp, r_op);
      }
   
      if (comments.equalsIgnoreCase("no")) {
         // TODO: exclude comments gv-discussion-id = 
      }

      // Remove trailing <AND>
      scopeString = scope.toString();
      if (scopeString.endsWith(" <AND> ")) {
   scopeString = scopeString.substring(0,scopeString.length()-7);
      }
   }

   public String getScope() {
     return scopeString;
   }

   public String getRightOperator(String r_op) {
      String new_op= "";

      if (r_op.indexOf(",") > 0) {
         new_op = r_op.replace(',', '+');
      } else if (r_op.indexOf(" ") > 0) {
         new_op = r_op.replace(' ', '+');
      } else {
   new_op = r_op;
      }

      return new_op;
   }

   public void parse(String l_op, String operand, String r_op) {

      if (operand.equals("does")) {
   scope.append("(" + l_op + " <CONTAINS> " + r_op + ")");
      } else if (operand.equals("doesnt")) {
   scope.append(" <NOT> "+ "(" + l_op+" <CONTAINS> " + r_op + ")");
      } else if (operand.equals("is")) {
   scope.append("(" + l_op + " = " + r_op + ")");
      } else if (operand.equals("isnt")) {
   scope.append(" <NOT> "+ "(" + l_op+" = " + r_op + ")");
      } else if (operand.equals("before")) {
   scope.append( "(" + l_op + " < " + r_op + ")");
      } else if (operand.equals("after")) {
   scope.append( "(" + l_op + " > " + r_op + ")");
      } else if (operand.equals("all")) {
      } else if (operand.equals("any")) {
      } else if (operand.equals("exact")) {
      }
      scope.append(" <AND> ");

   }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.