package nl.pascaldevink.intellij.thesaurus.downloader;
import org.apache.commons.httpclient.HttpException;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
public abstract class AbstractDownloader implements ThesaurusDownloader
{
protected String apiKey = "";
public AbstractDownloader(String apiKey)
{
this.apiKey = apiKey;
}
@Override
public List<String> downloadThesaurusList(String originalWord) throws IOException {
String serverResponse = this.download(originalWord);
List<String> synonyms = this.parseRawJsonToSynonymsList(serverResponse);
return synonyms;
}
protected String camelCaseSynonym(String originalSynonym)
{
if (!originalSynonym.contains(" "))
return originalSynonym;
String[] words = originalSynonym.split(" ");
StringBuilder camelCaseBuilder = new StringBuilder();
camelCaseBuilder.append(words[0].trim());
for (int i = 1; i < words.length; i++)
{
String word = words[i].trim();
char[] chars = word.toCharArray();
chars[0] = Character.toUpperCase(chars[0]);
camelCaseBuilder.append(new String(chars));
}
return camelCaseBuilder.toString();
}
protected String download(String originalWord) throws IOException
{
URL serverAddress = new URL(buildUrl(originalWord));
HttpURLConnection connection = (HttpURLConnection)serverAddress.openConnection();
connection.connect();
int rc = connection.getResponseCode();
if (rc != 200) {
throw new HttpException("No result found");
}
String line = null;
BufferedReader br = new BufferedReader(new java.io.InputStreamReader(connection.getInputStream()));
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null)
sb.append(line + '\n');
connection.disconnect();
return sb.toString();
}
protected abstract String buildUrl(String originalWord) throws UnsupportedEncodingException;
protected abstract List<String> parseRawJsonToSynonymsList(String rawJson);
}