/*
* Copyright 2008-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/package com.nominanuda.solr;
//TODO
public class SolrHelper {
public static final SolrHelper SOLR = new SolrHelper();
// public Arr listResultsDotAware(SolrServer solr, SolrQuery sq, int start, int count) throws SolrServerException {
// Arr res = new DataArrayImpl();
// sq.setStart(start);
// sq.setRows(count);
// QueryResponse qr = solr.query(sq);
// qr.getResults();
// SolrDocumentList sdl = qr.getResults();
// for(Map<String,Object> d : sdl) {
// Obj o = solrDoc2DataObject(d);
// res.add(o);
// }
// return res;
// }
// public Obj solrDoc2DataObject(Map<String, Object> d) {
// return (Obj)struct.fromFlatMap(normalizeDynFields(d));
// }
//
// public Obj sid2DataObject(SolrInputDocument sid) {
// Map<String, Object> m = new LinkedHashMap<String, Object>();
// Iterator<SolrInputField> itr = sid.iterator();
// while(itr.hasNext()) {
// SolrInputField f = itr.next();
// m.put(f.getName(), f.getValue());
// }
// return solrDoc2DataObject(m);
// }
//
// private Map<String, Object> normalizeDynFields(Map<String, Object> d) {
// Map<String, Object> res = new LinkedHashMap<String, Object>();
// for(Entry<String, Object> e : d.entrySet()) {
// String name = e.getKey();
// if(isDynamicFieldName(name)) {
// name = fromDynamicFieldName(name);
// }
// res.put(name, e.getValue());
// }
// return res;
// }
//
// private boolean isDynamicFieldName(String s) {
// return s.endsWith("_l")
// || s.endsWith("_d")
// || s.endsWith("_s")
// || s.endsWith("_b")
// ;
// }
//
// private String makeDynamicFieldName(String name, Object val) {
// switch (struct.getDataType(val)) {
// case bool:
// return name + "_b";
// case number:
// return val instanceof Long ? name + "_l" : name + "_d";
// case string:
// return name + "_s";
// default:
// return Check.illegalargument.fail();
// }
// }
// private String fromDynamicFieldName(String dName) {
// return dName.substring(0, dName.length() - 2);
// }
//
// public String escAndQuote(String s) {
// return '"' + esc(s) + '"';
// }
//
// public String esc(String s) {
// return ClientUtils.escapeQueryChars(s);
// }
//
// //TODO more than one level + nested fields naming convention
// public SolrInputDocument sid(Obj obj, Set<String> solrFields) {
// SolrInputDocument sid = new SolrInputDocument();
// for(String k : obj.getKeys()) {
// Object val = obj.get(k);
// if(val == null) {
// continue;
// } else if(struct.isPrimitiveOrNull(val)) {
// addField(sid, k, val, solrFields);
// } else if(struct.isDataObject(val)) {
// Obj o = (Obj) val;
// for(String k1 : o.getKeys()) {
// Object val1 = o.get(k1);
// if(val1 == null) {
// continue;
// } else if(struct.isPrimitiveOrNull(val1)) {
// if(solrFields.contains(k+"."+k1)) {
// addField(sid, k+"."+k1, val1, solrFields);
// } else {
// addField(sid, k+"."+makeDynamicFieldName(k1, val1), val1, solrFields);
// }
// }
// }
// } else if(struct.isDataArray(val)) {
// Arr a = (Arr) val;
// Collection<Object> vals = new LinkedList<Object>();
// for(Object val1 : a) {
// if(val1 == null) {
// continue;
// } else if(struct.isPrimitiveOrNull(val1)) {
// vals.add(val1);
// }
// }
// setField(sid, k, vals, solrFields);
// }
// }
// return sid;
// }
// private void addField(SolrInputDocument sid, String key, Object val, Set<String> solrFields) {
// if(solrFields.contains(key) || isDynamicFieldName(key)) {
// sid.addField(key, val);
// }
// }
// private void setField(SolrInputDocument sid, String key, Object val, Set<String> solrFields) {
// if(solrFields.contains(key)) {
// sid.setField(key, val);
// }
// }
}