package org.nodeclipse.ui.contentassist;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.nodeclipse.ui.util.Constants;
import org.nodeclipse.ui.util.NodeclipseConsole;
import org.nodeclipse.ui.util.ProcessUtils;
/**
* @author LambGao
* @author Paul Verest
* TODO don't use static {}
*/
public class ContentFromCompletionsJson {
public static JSONArray COMPLETIONS = null;
static {
try {
InputStream is = null;
// option to have completions.json as external file
String completionJsonPath = ProcessUtils.getCompletionsJsonPath();
if (completionJsonPath == null || completionJsonPath.equals("")) {
completionJsonPath = Constants.COMPLETIONS_JSON;
is = ContentFromCompletionsJson.class.getClassLoader().getResourceAsStream(completionJsonPath);
} else {
File file = new File(completionJsonPath);
if (!file.exists()) {
NodeclipseConsole.write("File "+completionJsonPath+" does not exist! \n");
}else{
is = new FileInputStream(file);
}
}
if (is==null){
NodeclipseConsole.write("Error while reading file "+completionJsonPath+"! \n");
}else{
JSONObject object = new JSONObject(inputStream2String(is));
COMPLETIONS = object.getJSONArray(Constants.COMPLETIONS_KEY);
}
} catch (JSONException e) {
NodeclipseConsole.write(e.getLocalizedMessage()+"\n");
} catch (IOException e) {
NodeclipseConsole.write(e.getLocalizedMessage()+"\n");
}
}
public static String inputStream2String(InputStream is) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(is));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = in.readLine()) != null) {
buffer.append(line);
}
return buffer.toString();
}
}