/*
* Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
* Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
* Jalview is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3
* of the License, or (at your option) any later version.
*
* Jalview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Jalview. If not, see .
* The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.urls;
import static jalview.util.UrlConstants.DB_ACCESSION;
import static jalview.util.UrlConstants.DELIM;
import static jalview.util.UrlConstants.SEP;
import jalview.util.JSONUtils;
import jalview.util.UrlLink;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import org.json.simple.parser.ParseException;
/**
*
* Implements the UrlProviderI interface for a UrlProvider object which serves
* URLs from identifiers.org
*
* @author $author$
* @version $Revision$
*/
public class IdentifiersUrlProvider extends UrlProviderImpl
{
private static final String LOCAL_KEY = "Local";
private static final String ID_ORG_KEY = "identifiers.org";
// map of string ids to urls
private HashMap urls;
// list of selected urls
private ArrayList selectedUrls;
public IdentifiersUrlProvider(String cachedUrlList)
{
urls = readIdentifiers(IdOrgSettings.getDownloadLocation());
selectedUrls = new ArrayList<>();
checkSelectionMatchesUrls(cachedUrlList);
}
/**
* Read data from an identifiers.org download file
*
* @param idFileName
* name of identifiers.org download file
* @return hashmap of identifiers.org data, keyed by MIRIAM id
*/
@SuppressWarnings("unchecked")
private HashMap readIdentifiers(String idFileName)
{
// identifiers.org data
HashMap idData = new HashMap<>();
String errorMessage = null;
try
{
// NOTE: THIS WILL FAIL IN SWINGJS BECAUSE IT INVOLVES A FILE READER
FileReader reader = new FileReader(idFileName);
String key = "";
Map obj = (Map) JSONUtils
.parse(reader);
if (obj.containsKey(ID_ORG_KEY))
{
key = ID_ORG_KEY;
}
else if (obj.containsKey(LOCAL_KEY))
{
key = LOCAL_KEY;
}
else
{
System.out.println(
"Unexpected key returned from identifiers jalview service");
return idData;
}
List