/** * Copyright (c) 2013-2016 Angelo ZERR. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation */ package tern.server.protocol; import com.eclipsesource.json.JsonObject; /** * Tern query. * * <cite> A query is an object with at least a type property, which determines * what kind of query it is. Depending on the type, other properties must or may * be present in order to provide further details. </cite> * * @see http://ternjs.net/doc/manual.html#protocol * */ public class TernQuery extends JsonObject { private static final long serialVersionUID = 1L; private static final String FILE_FIELD_NAME = "file"; private static final String TYPE_QUERY = "type"; private static final String LINE_CHAR_POSITIONS_FIELD_NAME = "lineCharPositions"; private static final String END_FIELD_NAME = "end"; public TernQuery(String type) { super.add(TYPE_QUERY, type); } public void setFile(String file) { super.set(FILE_FIELD_NAME, file); } public String getFile() { return JsonHelper.getString(super.get(FILE_FIELD_NAME)); } public void setEnd(Integer pos) { if (pos == null) { super.remove(END_FIELD_NAME); } else { super.add(END_FIELD_NAME, pos); } } /** * Offsets into a file can be either (zero-based) integers, or {line, ch} * objects, where both line and ch are zero-based integers. Offsets returned * by the server will be integers, unless the lineCharPositions field in the * request was set to true, in which case they will be {line, ch} objects. * * @param lineCharPositions */ public void setLineCharPositions(boolean lineCharPositions) { super.add(LINE_CHAR_POSITIONS_FIELD_NAME, lineCharPositions); } /** * Returns the tern query type. * * @return the tern query type. */ public String getType() { return JsonHelper.getString(this, TYPE_QUERY); } /** * Returns the label of the tern query. * * @return the label of the tern query. */ public String getLabel() { return getType(); } }