*/
package jalview.io;
-import jalview.api.AlignExportSettingI;
+import jalview.api.AlignExportSettingsI;
import jalview.api.AlignViewportI;
import jalview.api.AlignmentViewPanel;
import jalview.api.FeatureSettingsModelI;
import jalview.util.MessageManager;
import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
*/
public class FileParse
{
+ protected static final String SPACE = " ";
+
+ protected static final String TAB = "\t";
+
/**
* text specifying source of data. usually filename or url.
*/
public File inFile = null;
+ private byte[] bytes; // from JavaScript
+
+ public byte[] getBytes()
+ {
+ return bytes;
+ }
/**
* a viewport associated with the current file operation. May be null. May
* move to different object.
/**
* specific settings for exporting data from the current context
*/
- private AlignExportSettingI exportSettings;
+ private AlignExportSettingsI exportSettings;
/**
* sequence counter for FileParse object created from same data source
* Create a datasource for input to Jalview. See AppletFormatAdapter for the
* types of sources that are handled.
*
- * @param fileStr
- * - datasource locator/content
+ * @param file
+ * - datasource locator/content as File or String
* @param sourceType
* - protocol of source
* @throws MalformedURLException
* @throws IOException
*/
- public FileParse(String fileStr, DataSourceType sourceType)
+ public FileParse(Object file, DataSourceType sourceType)
throws MalformedURLException, IOException
{
+ if (file instanceof File)
+ {
+ parse((File) file, ((File) file).getPath(), sourceType, true);
+ }
+ else
+ {
+ parse(null, file.toString(), sourceType, false);
+ }
+ }
+
+ private void parse(File file, String fileStr, DataSourceType sourceType,
+ boolean isFileObject) throws MalformedURLException, IOException
+ {
+ /**
+ * @j2sNative
+ *
+ * this.bytes = file && file._bytes;
+ *
+ */
this.dataSourceType = sourceType;
error = false;
if (sourceType == DataSourceType.FILE)
{
- if (checkFileSource(fileStr))
+
+ if (bytes != null)
+ {
+ // this will be from JavaScript
+ inFile = file;
+ dataIn = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(bytes)));
+ dataName = fileStr;
+ }
+ else if (checkFileSource(fileStr))
{
String suffixLess = extractSuffix(fileStr);
if (suffixLess != null)
}
}
}
+ else if (sourceType == DataSourceType.RELATIVE_URL)
+ {
+ /**
+ * BH 2018 hack for no support for access-origin
+ *
+ * @j2sNative
+ *
+ * this.bytes = swingjs.JSUtil.getFileAsBytes$O(fileStr);
+ *
+ */
+
+ dataIn = new BufferedReader(new java.io.InputStreamReader(new ByteArrayInputStream(bytes)));
+ dataName = fileStr;
+
+ }
else if (sourceType == DataSourceType.URL)
{
try
{
// pass up the reason why we have no source to read from
throw new IOException(MessageManager.formatMessage(
- "exception.failed_to_read_data_from_source", new String[]
+ "exception.failed_to_read_data_from_source",
+ new String[]
{ errormessage }));
}
error = false;
/**
* @return the currently configured exportSettings for writing data.
*/
- public AlignExportSettingI getExportSettings()
+ public AlignExportSettingsI getExportSettings()
{
return exportSettings;
}
* @param exportSettings
* the exportSettings to set
*/
- public void setExportSettings(AlignExportSettingI exportSettings)
+ public void setExportSettings(AlignExportSettingsI exportSettings)
{
this.exportSettings = exportSettings;
}