/******************************************************************************* * Copyright (c) 2012-2015 Codenvy, S.A. * 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: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.ide.ext.java.jdt.templates; import org.eclipse.che.ide.ext.java.jdt.templates.api.Template; import com.google.gwt.json.client.JSONArray; import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONParser; import java.util.ArrayList; import java.util.List; /** * @author <a href="mailto:evidolob@exoplatform.com">Evgen Vidolob</a> * @version $Id: 5:48:13 PM 34360 2009-07-22 23:58:59Z evgen $ */ public class TemplateStore { // protected interface Templates extends ClientBundle { // @Source("templates.js") // TextResource templatesText(); // // @Source("codeTemplates.js") // TextResource codeTemplatesText(); // } private static Template[] templates; private static Template[] codeTemplates; /** * */ public TemplateStore() { if (templates == null) { parseTemplates(); } } /** @return */ public Template[] getTemplates() { return templates; } /** * */ private void parseTemplates() { // Templates templatesText = GWT.create(Templates.class); // JSONObject jsonObject = JSONParser.parseLenient(templatesText.templatesText().getText()).isObject(); JSONObject jsonObject = JSONParser.parseLenient(TemplatesJs.codeTemplate()).isObject(); JSONArray templatesJson = jsonObject.get("codeTemplates").isArray(); if (templatesJson != null) { templates = new Template[templatesJson.size()]; fillTemplates(templatesJson, templates); } else { templates = new Template[0]; } jsonObject = JSONParser.parseLenient(TemplatesJs.templates()).isObject(); templatesJson = jsonObject.get("templates").isArray(); if (templatesJson != null) { codeTemplates = new Template[templatesJson.size()]; fillTemplates(templatesJson, codeTemplates); } else { codeTemplates = new Template[0]; } } /** @param templatesJson */ private void fillTemplates(JSONArray templatesJson, Template[] templates) { String name, description, contextTypeId, pattern, id = null; boolean isAutoInsertable = false; // JsoArray<JsonObject> array = templatesJson.getJavaScriptObject().cast(); for (int i = 0; i < templatesJson.size(); i++) { JSONObject tem = templatesJson.get(i).isObject(); name = tem.get("name").isString().stringValue(); description = tem.get("description").isString().stringValue(); contextTypeId = tem.get("context").isString().stringValue(); pattern = tem.get("text").isString().stringValue(); isAutoInsertable = tem.get("autoinsert").isBoolean().booleanValue(); id = tem.get("id").isString().stringValue(); templates[i] = new Template(id, name, description, contextTypeId, pattern, isAutoInsertable); } } /** * @param contextTypeId * @return */ public Template[] getTemplates(String contextTypeId) { List<Template> temList = new ArrayList<Template>(); for (Template t : templates) { if (t.getContextTypeId().equals(contextTypeId)) temList.add(t); } return temList.toArray(new Template[temList.size()]); } /** * @param id * @return */ public Template findTemplateById(String id) { for (Template t : codeTemplates) { if (t.getId().equals(id)) return t; } return null; } }