/** Builds query parameter line by figuring out what should be submitted */ private StringBuilder buildParameterList(Method method, StringBuilder query) { for (Parameter p : ReflectionUtils.getParameters(method)) { QueryParameter qp = p.annotation(QueryParameter.class); if (qp != null) { String name = qp.value(); if (name.length() == 0) name = p.name(); if (name == null || name.length() == 0) continue; // unknown parameter name. we'll report the error when the form is submitted. RelativePath rp = p.annotation(RelativePath.class); if (rp != null) name = rp.value() + '/' + name; if (query.length() == 0) query.append("+qs(this)"); if (name.equals("value")) { // The special 'value' parameter binds to the the current field query.append(".addThis()"); } else { query.append(".nearBy('" + name + "')"); } continue; } Method m = ReflectionUtils.getPublicMethodNamed(p.type(), "fromStapler"); if (m != null) buildParameterList(m, query); } return query; }
/** * 関連キーワード設定/解除 * * @param isRelate true:設定/false:解除 * @param keyword1 対象キーワード1 * @param keyword2 対象キーワード2 * @return 関連キーワードを設定/解除後のキーワード1のキーワード情報 * @throws HatenaHaikuException * @since v0.0.1 */ private Keyword _modifyRelateKeyword(boolean isRelate, String keyword1, String keyword2) throws HatenaHaikuException { if (StringUtil.isSame(keyword1, keyword2)) { throw new HatenaHaikuException("対象キーワードに同じキーワードは指定できません。"); } try { QueryParameter param = new QueryParameter(); param.setWord1(keyword1); param.setWord2(keyword2); String resultXml = HttpUtil.doGet( loginUser, (isRelate ? URL_RELATE_KEYWORD_XML : URL_UNRELATE_KEYWORD_XML), param, isNeedHttpLog()); return toKeyword(XmlUtil.getRootElement(resultXml)); } catch (ParserConfigurationException e) { throw new HatenaHaikuException("ParserConfigurationException発生。", e); } catch (SAXException e) { throw new HatenaHaikuException("SAXException発生。", e); } catch (IOException e) { throw new HatenaHaikuException("IOException発生。", e); } }
/** * Removes all query parameters from the UriBuilder that has the given key. * * <p>(e.g., removeQueryParametersWithKey("k1") when UriBuilder's query string of * k1=v1&k2=v2&k1=v3 results in k2=v2). * * @param key Query parameter's key to remove * @return this UriBuilder object. Useful for chaining. */ public UriBuilder removeQueryParametersWithKey(String key) { // There could be multiple query parameters with this key and // we want to remove all of them. Iterator<QueryParameter> it = this.queryParameters.iterator(); while (it.hasNext()) { QueryParameter qp = it.next(); if (qp.getKey().equals(key)) { it.remove(); } } return this; }
@Override public String toString() { return "the class: " + compareClass.getSimpleName() + " doesn't have a field with name: " + queryParameter.getName(); }
/** * 認証したユーザがフォローしているユーザのリストを100件取得します。(指定ページ)<br> * <i>http://h.hatena.ne.jp/api/statuses/friends.xml&page=<font color="red">ページ</font></i> * * @see <a href="http://h.hatena.ne.jp/api#statuses-friends">statuses/friends</a> * @param op 集合操作 * @param page ページ * @return 認証したユーザがフォローしているユーザのリスト(指定ページ) * @throws HatenaHaikuException * @since v1.1.0 */ public <T> T getFollowingList(ReduceOp<User, T> op, int page) throws HatenaHaikuException { try { QueryParameter param = new QueryParameter(); param.setPage(page); String resultXml = HttpUtil.doGet(loginUser, URL_FOLLOWING_LIST_XML, param, isNeedHttpLog()); return toUserList(op, XmlUtil.getRootElement(resultXml)); } catch (ParserConfigurationException e) { throw new HatenaHaikuException("ParserConfigurationException発生。", e); } catch (SAXException e) { throw new HatenaHaikuException("SAXException発生。", e); } catch (IOException e) { throw new HatenaHaikuException("IOException発生。", e); } }
public QueryError(Class<T> compareClass, final QueryParameter queryParameter) { this.compareClass = compareClass; this.queryParameter = queryParameter; errorMessage = "the object: " + compareClass.getSimpleName() + " doesn't have a field with name: " + queryParameter.getName(); }
public List findWithNamedQuery( String namedQueryName, QueryParameter parameters, int resultLimit) { Set<Entry<String, Object>> rawParameters = parameters.parameters().entrySet(); Query query = this.em.createNamedQuery(namedQueryName); if (resultLimit > 0) query.setMaxResults(resultLimit); for (Entry<String, Object> entry : rawParameters) { query.setParameter(entry.getKey(), entry.getValue()); } return query.getResultList(); }
/** * 認証したユーザのフレンドタイムラインを取得します。<br> * <i>http://h.hatena.ne.jp/api/statuses/friends_timeline.xml</i> * * @see <a * href="http://h.hatena.ne.jp/api#statuses-friends_timeline">statuses/friends_timeline</a> * @param op 集合操作 * @param page 取得するページです。最大数は100です。 * @param count 取得数を指定します。最大数は 200 です。 * @param since その日時よりも新しい投稿のみに絞り込むための日時を指定します。 * @return 認証したユーザのフレンドタイムライン * @throws HatenaHaikuException * @since v1.1.0 */ public <T> T getFriendsTimeline(ReduceOp<Status, T> op, int page, int count, Date since) throws HatenaHaikuException { try { QueryParameter param = new QueryParameter(); param.setPage(page); param.setCount(count); param.setSince(since); String resultXml = HttpUtil.doGet(loginUser, URL_FRIENDS_TIMELINE_XML, param, isNeedHttpLog()); return toStatusList(op, XmlUtil.getRootElement(resultXml)); } catch (ParserConfigurationException e) { throw new HatenaHaikuException("ParserConfigurationException発生。", e); } catch (SAXException e) { throw new HatenaHaikuException("SAXException発生。", e); } catch (IOException e) { throw new HatenaHaikuException("IOException発生。", e); } }
private List<String> buildFillDependencies(Method method, List<String> depends) { for (Parameter p : ReflectionUtils.getParameters(method)) { QueryParameter qp = p.annotation(QueryParameter.class); if (qp != null) { String name = qp.value(); if (name.length() == 0) name = p.name(); if (name == null || name.length() == 0) continue; // unknown parameter name. we'll report the error when the form is submitted. RelativePath rp = p.annotation(RelativePath.class); if (rp != null) name = rp.value() + '/' + name; depends.add(name); continue; } Method m = ReflectionUtils.getPublicMethodNamed(p.type(), "fromStapler"); if (m != null) buildFillDependencies(m, depends); } return depends; }
/** * Converts a POJO to a list of query string parameters, does not support nesting. * * @param object to convert to query string parameters * @return A list of NameValuePair each representing a different parameter * @throws IllegalAccessException if SecurityPolicy does not allow getting value using reflection */ public static List<NameValuePair> convertObjectToParameters(Object object) throws IllegalAccessException { List<NameValuePair> parameters = new ArrayList<>(); Field[] fields = object.getClass().getDeclaredFields(); for (Field f : fields) { QueryParameter annot = f.getAnnotation(QueryParameter.class); if (annot != null) { f.setAccessible(true); Object fieldValue = f.get(object); // skip if null if (fieldValue == null) { continue; } // if array add multiple parameters if (fieldValue.getClass().isArray()) { for (int i = 0; i < Array.getLength(fieldValue); i++) { parameters.add( new BasicNameValuePair(annot.value(), Array.get(fieldValue, i).toString())); } } else if (fieldValue instanceof Iterable) { // or iterable for (Object element : (Iterable) fieldValue) { parameters.add(new BasicNameValuePair(annot.value(), element.toString())); } } else { // Convert booleans to numbers if (fieldValue instanceof Boolean && ((Boolean) fieldValue).booleanValue()) { parameters.add(new BasicNameValuePair(annot.value(), "1")); } else { parameters.add(new BasicNameValuePair(annot.value(), fieldValue.toString())); } } } } return parameters; }
/** * 認証したユーザのユーザタイムラインを取得します。<br> * <i>http://h.hatena.ne.jp/api/statuses/user_timeline.xml</i> * * @see <a href="http://h.hatena.ne.jp/api#statuses-user_timeline">statuses/user_timeline</a> * @param op 集合操作 * @param page 取得するページです。最大数は100です。 * @param count 取得数を指定します。最大数は 200 です。 * @param since その日時よりも新しい投稿のみに絞り込むための日時を指定します。 * @param isHot 人気順取得用かどうか * @return 認証したユーザのユーザタイムライン * @throws HatenaHaikuException * @since v1.0.0 */ private <T> T _getUserTimeline( ReduceOp<Status, T> op, int page, int count, Date since, boolean isHot) throws HatenaHaikuException { try { QueryParameter param = new QueryParameter(); if (isHot) { param.setSort(QueryParameter.HOT); // 人気順 } param.setPage(page); param.setCount(count); param.setSince(since); String resultXml = HttpUtil.doGet(loginUser, URL_USER_TIMELINE_XML, param, isNeedHttpLog()); return toStatusList(op, XmlUtil.getRootElement(resultXml)); } catch (ParserConfigurationException e) { throw new HatenaHaikuException("ParserConfigurationException発生。", e); } catch (SAXException e) { throw new HatenaHaikuException("SAXException発生。", e); } catch (IOException e) { throw new HatenaHaikuException("IOException発生。", e); } }
private ArrayList queryCondition(StockInfoForm form) { ArrayList paramList = new ArrayList(); where = " where 1=1 "; try { if (form != null) { if (form.getOrganizationCode() != null && form.getOrganizationCode().longValue() != 0) { where = where + " and pa.organizationCode = :organizationCode"; QueryParameter param = new QueryParameter(); param.setName("organizationCode"); param.setValue(form.getOrganizationCode()); param.setHbType(Hibernate.LONG); paramList.add(param); } if (form.getStockCode() != null && !form.getStockCode().equals("")) { where = where + " and pa.stockCode = :stockCode"; QueryParameter param = new QueryParameter(); param.setName("stockCode"); param.setValue(form.getStockCode()); param.setHbType(Hibernate.STRING); paramList.add(param); } if (form.getBinCode() != null && !form.getBinCode().equals("")) { where = where + " and pa.binCode = :binCode"; QueryParameter param = new QueryParameter(); param.setName("binCode"); param.setValue(form.getBinCode()); param.setHbType(Hibernate.STRING); paramList.add(param); } if (form.getStockType() != null && !form.getStockType().equals("")) { where = where + " and pa.stockType = :stockType"; QueryParameter param = new QueryParameter(); param.setName("stockType"); param.setValue(form.getStockType()); param.setHbType(Hibernate.STRING); paramList.add(param); } if (form.getSkuType() != null && !form.getSkuType().equals("")) { where = where + " and pa.skuType = :skuType"; QueryParameter param = new QueryParameter(); param.setName("skuType"); param.setValue(form.getSkuType()); param.setHbType(Hibernate.STRING); paramList.add(param); } if (form.getSkuCode() != null && !form.getSkuCode().equals("")) { where = where + " and pa.skuCode = :skuCode"; QueryParameter param = new QueryParameter(); param.setName("skuCode"); param.setValue(form.getSkuCode()); param.setHbType(Hibernate.STRING); paramList.add(param); } if (form.getSkuNum() != null && form.getSkuNum().longValue() != 0) { where = where + " and pa.skuNum = :skuNum"; QueryParameter param = new QueryParameter(); param.setName("skuNum"); param.setValue(form.getSkuNum()); param.setHbType(Hibernate.INTEGER); paramList.add(param); } if (form.getSnNo() != null && !form.getSnNo().equals("")) { where = where + " and pa.snNo = :snNo"; QueryParameter param = new QueryParameter(); param.setName("snNo"); param.setValue(form.getSnNo()); param.setHbType(Hibernate.STRING); paramList.add(param); } if (form.getLotNo() != null && !form.getLotNo().equals("")) { where = where + " and pa.lotNo = :lotNo"; QueryParameter param = new QueryParameter(); param.setName("lotNo"); param.setValue(form.getLotNo()); param.setHbType(Hibernate.STRING); paramList.add(param); } if (form.getFlowNo() != null && !form.getFlowNo().toString().equals("0")) { // System.out.println("getFlowNo------------"+form.getFlowNo()); where = where + " and pa.flowNo = :flowNo"; QueryParameter param = new QueryParameter(); param.setName("flowNo"); param.setValue(form.getFlowNo()); param.setHbType(Hibernate.LONG); paramList.add(param); } /* if (form.getRealCost() != null && form.getRealCost().doubleValue()!=-1) { where = where + " and pa.realCost = :realCost"; QueryParameter param = new QueryParameter(); param.setName("realCost"); param.setValue(form.getRealCost()); param.setHbType(Hibernate.DOUBLE); paramList.add(param); } */ if (form.getRealCost3() != null && !form.getRealCost3().equals("")) { where = where + " and pa.realCost = :realCost"; QueryParameter param = new QueryParameter(); param.setName("realCost"); param.setValue(new Double(form.getRealCost3())); param.setHbType(Hibernate.DOUBLE); paramList.add(param); } if (form.getOwner() != null && !form.getOwner().equals("")) { where = where + " and pa.owner = :owner"; QueryParameter param = new QueryParameter(); param.setName("owner"); param.setValue(form.getOwner()); param.setHbType(Hibernate.STRING); paramList.add(param); } if (form.getStockStatus() != null && !form.getStockStatus().equals("")) { if ("adjust".equals(form.getStockStatus())) { // 可用库存和差错处理 where = where + " and pa.stockStatus in ('A','B')"; } else { where = where + " and pa.stockStatus = :stockStatus"; QueryParameter param = new QueryParameter(); param.setName("stockStatus"); param.setValue(form.getStockStatus()); param.setHbType(Hibernate.STRING); paramList.add(param); } } if (form.getBinType() != null && !form.getBinType().equals("")) { where = where + " and pa.binType = (select distinct(sb.binType) from TsStationBinForm as sb,TsStoreInfoForm as si " + "where si.storeId=sb.storeId and si.storeCode=pa.stockCode and sb.binCode=pa.binCode " + "and sb.organizationCode=pa.organizationCode and sb.binType='" + form.getBinType() + "'))"; } if (form.getRequestId() != null && !form.getRequestId().toString().equals("0")) { where = where + " and pa.requestId = :requestId"; QueryParameter param = new QueryParameter(); param.setName("requestId"); param.setValue(form.getRequestId()); param.setHbType(Hibernate.LONG); paramList.add(param); } } } catch (Exception e) { e.printStackTrace(); } return paramList; }
private ArrayList queryCondition(SaleDetailForm form) { ArrayList paramList = new ArrayList(); where = " where pa.delFlag=0 and sif.stockStatus = 'A' and sif.stuffNo=pa.stuffNo"; if (form != null) { if (form.getSaleNo() != null && !form.getSaleNo().equals("")) { where = where + " and pa.saleNo like :saleNo"; QueryParameter param = new QueryParameter(); param.setName("saleNo"); param.setValue(form.getSaleNo()); param.setHbType(Hibernate.STRING); paramList.add(param); } if (form.getStuffNo() != null && !form.getStuffNo().equals("")) { where = where + " and pa.stuffNo like :stuffNo "; QueryParameter param = new QueryParameter(); param.setName("stuffNo"); param.setValue(form.getStuffNo()); param.setHbType(Hibernate.STRING); paramList.add(param); } if (form.getSkuCode() != null && !form.getSkuCode().equals("")) { where = where + " and pa.skuCode like :skuCode "; QueryParameter param = new QueryParameter(); param.setName("skuCode"); param.setValue(form.getSkuCode()); param.setHbType(Hibernate.STRING); paramList.add(param); } if (form.getModelCode() != null && !form.getModelCode().equals("")) { where = where + " and pa.modelCode like :modelCode "; QueryParameter param = new QueryParameter(); param.setName("modelCode"); param.setValue(form.getModelCode()); param.setHbType(Hibernate.STRING); paramList.add(param); } if (form.getModelSerialNo() != null && !form.getModelSerialNo().equals("")) { where = where + " and pa.modelSerialNo like :modelSerialNo "; QueryParameter param = new QueryParameter(); param.setName("modelSerialNo"); param.setValue(form.getModelSerialNo()); param.setHbType(Hibernate.STRING); paramList.add(param); } if (form.getCreateBy() != null && form.getCreateBy() != 0) { where = where + " and pa.createBy = :createBy"; QueryParameter param = new QueryParameter(); param.setName("createBy"); param.setValue(form.getCreateBy()); param.setHbType(Hibernate.LONG); paramList.add(param); } if (form.getPartStatus() != null && !form.getPartStatus().equals("")) { where = where + " and pa.partStatus = :partStatus"; QueryParameter param = new QueryParameter(); param.setName("partStatus"); param.setValue(form.getPartStatus()); param.setHbType(Hibernate.STRING); paramList.add(param); } if (form.getInDate1() != null && !form.getInDate1().equals("")) { where += " and pa.createDate >= :inDate1"; QueryParameter param = new QueryParameter(); param.setName("inDate1"); param.setValue(Operate.toDate(form.getInDate1())); param.setHbType(Hibernate.DATE); paramList.add(param); } if (form.getInDate2() != null && !form.getInDate2().equals("")) { where += " and pa.createDate < :inDate2"; QueryParameter param = new QueryParameter(); param.setName("inDate2"); param.setValue(Operate.getNextDate(form.getInDate2())); param.setHbType(Hibernate.DATE); paramList.add(param); } } return paramList; }
/** * Generate HQL sentence for querying results quantity * * @param aform ActionForm * @return AdvQueryString */ protected AdvQueryString generateCountQuery(ActionForm aform) { TsRepairLevelForm form = (TsRepairLevelForm) aform; AdvQueryString countQuery = new AdvQueryString(); ArrayList paramList = new ArrayList(); String queryString = "select count(pa) from TsRepairLevelForm as pa "; String where = " where 1=1 "; if (form != null) { if (form.getMethodCode() != null && !form.getMethodCode().equals("")) { where = where + " and (pa.methodCode like :methodCode "; QueryParameter param = new QueryParameter(); param.setName("methodCode"); param.setValue(form.getMethodCode()); param.setHbType(Hibernate.STRING); paramList.add(param); where = where + " or pa.methodCode like :methodCodeUPCASE"; param = new QueryParameter(); param.setName("methodCodeUPCASE"); param.setValue("%" + form.getMethodCode().toUpperCase() + "%"); param.setHbType(Hibernate.STRING); paramList.add(param); where = where + " or pa.methodCode like :methodCodeLOWERCASE"; param = new QueryParameter(); param.setName("methodCodeLOWERCASE"); param.setValue("%" + form.getMethodCode().toLowerCase() + "%"); param.setHbType(Hibernate.STRING); paramList.add(param); where += ")"; } if (form.getPartCode() != null && !form.getPartCode().equals("")) { where = where + " and (pa.partCode like :partCode "; QueryParameter param = new QueryParameter(); param.setName("partCode"); param.setValue(form.getPartCode()); param.setHbType(Hibernate.STRING); paramList.add(param); where = where + " or pa.partCode like :partCodeUPCASE"; param = new QueryParameter(); param.setName("partCodeUPCASE"); param.setValue("%" + form.getPartCode().toUpperCase() + "%"); param.setHbType(Hibernate.STRING); paramList.add(param); where = where + " or pa.partCode like :partCodeLOWERCASE"; param = new QueryParameter(); param.setName("partCodeLOWERCASE"); param.setValue("%" + form.getPartCode().toLowerCase() + "%"); param.setHbType(Hibernate.STRING); paramList.add(param); where += ")"; } if (form.getBizGroupName() != null && !form.getBizGroupName().equals("")) { where = where + " and (pa.bizGroupName like :bizGroupName"; QueryParameter param = new QueryParameter(); param.setName("bizGroupName"); param.setValue(form.getBizGroupName()); param.setHbType(Hibernate.STRING); paramList.add(param); where = where + " or pa.bizGroupName like :bizGroupNameUPCASE"; param = new QueryParameter(); param.setName("bizGroupNameUPCASE"); param.setValue("%" + form.getBizGroupName().toUpperCase() + "%"); param.setHbType(Hibernate.STRING); paramList.add(param); where = where + " or pa.bizGroupName like :bizGroupNameLOWERCASE"; param = new QueryParameter(); param.setName("bizGroupNameLOWERCASE"); param.setValue("%" + form.getBizGroupName().toLowerCase() + "%"); param.setHbType(Hibernate.STRING); paramList.add(param); where += ")"; } if (form.getRepairType() != null && !form.getRepairType().equals("N") && !form.getRepairType().equals("")) { where = where + " and (pa.repairType = :repairType)"; QueryParameter param = new QueryParameter(); param.setName("repairType"); param.setValue(form.getRepairType()); param.setHbType(Hibernate.STRING); paramList.add(param); } if (form.getRepairProperites() != null && !form.getRepairProperites().equals("N") && !form.getRepairProperites().equals("")) { where = where + " and (pa.repairProperites = :repairProperites)"; QueryParameter param = new QueryParameter(); param.setName("repairProperites"); param.setValue(form.getRepairProperites()); param.setHbType(Hibernate.STRING); paramList.add(param); } if (form.getRepairLevel() != null && form.getRepairLevel().longValue() != 0 && !form.getRepairLevel().equals("")) { where = where + " and (pa.repairLevel = :repairLevel) "; QueryParameter param = new QueryParameter(); param.setName("repairLevel"); param.setValue(form.getRepairLevel()); param.setHbType(Hibernate.LONG); paramList.add(param); } if (form.getModelCode() != null && !form.getModelCode().equals("")) { where = where + " and (pa.modelCode like :modelCode "; QueryParameter param = new QueryParameter(); param.setName("modelCode"); param.setValue(form.getModelCode()); param.setHbType(Hibernate.STRING); paramList.add(param); where = where + " or pa.modelCode like :modelCodeUPCASE"; param = new QueryParameter(); param.setName("modelCodeUPCASE"); param.setValue("%" + form.getModelCode().toUpperCase() + "%"); param.setHbType(Hibernate.STRING); paramList.add(param); where = where + " or pa.modelCode like :modelCodeLOWERCASE"; param = new QueryParameter(); param.setName("modelCodeLOWERCASE"); param.setValue("%" + form.getModelCode().toLowerCase() + "%"); param.setHbType(Hibernate.STRING); paramList.add(param); where += ")"; } if (form.getMajorCat() != null && !"".equals(form.getMajorCat())) { where = where + " and (pa.majorCat like :majorCat) "; QueryParameter param = new QueryParameter(); param.setName("majorCat"); param.setValue(form.getMajorCat()); param.setHbType(Hibernate.STRING); paramList.add(param); } if (form.getMinorCat() != null && !"".equals(form.getMinorCat())) { where = where + " and (pa.minorCat like :minorCat) "; QueryParameter param = new QueryParameter(); param.setName("minorCat"); param.setValue(form.getMinorCat()); param.setHbType(Hibernate.STRING); paramList.add(param); } } queryString = queryString + where; countQuery.setQueryString(queryString); countQuery.setParameters(paramList); return countQuery; }