Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,7 @@ subprojects {

apply from: "$fireflyPath/buildScript/utils.gincl"

task purge << {
println('Removes all firefly build directories.')
delete "${fireflyPath}/build", "${fireflyPath}/jars/build", "${fireflyPath}/node_modules"
}
4 changes: 0 additions & 4 deletions buildScript/utils.gincl
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,3 @@ def execCmd(remoteHost, ignoreFailure, cmdLine) {
}


task purge << {
println('Removes all build directories.')
delete "${fireflyPath}/build", "${fireflyPath}/jars/build", "${fireflyPath}/node_modules"
}
25 changes: 17 additions & 8 deletions buildScript/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,24 @@ import fs from 'fs';

var exclude_dirs = [/node_modules/, /java/, /python/, /config/, /test/];

function makeWebpackConfig(config) {
/**
* A helper function to create the webpack config object to be sent to webpack module bundler.
* @param {Object} config configuration parameters used to create the webpack config object.
* @param {string} config.src source directory
* @param {string} config.firefly_root Firefly's build root
* @param {string} [config.firefly_dir] Firefly's JS source directory
* @param {Object} [config.alias] additional alias
* @param {boolean=true} [config.use_loader] generate a loader to load compiled JS script(s). Defautls to true
* @param {string} [config.project] project name
* @param {string} [config.filename] name of the generated JS script.
* @returns {Object} a webpack config object.
*/
export default function makeWebpackConfig(config) {

// setting defaults
config.firefly_dir = config.firefly_dir || config.src;
config.src = config.src || __dirname;
config.firefly_root = config.firefly_root || path.resolve(config.src, '../..');
config.firefly_dir = config.firefly_dir || path.resolve(config.firefly_root, 'src/firefly');
config.project = config.project || path.resolve(config.src, '../../');

var def_config = {
Expand Down Expand Up @@ -229,11 +243,6 @@ function makeWebpackConfig(config) {




export default makeWebpackConfig;



function firefly_loader(loadScript, outpath, debug=true) {
return function () {
this.plugin('done', function (stats) {
Expand All @@ -249,7 +258,7 @@ function firefly_loader(loadScript, outpath, debug=true) {
}`;
}
var content = fs.readFileSync(loadScript);
content += `\nloadScript('/${cxt_name}/${cxt_name}-${hash}.js'${callback});`;
content += `\nloadScript('/${cxt_name}/firefly-${hash}.js'${callback});`;
var loader = path.join(outpath, 'firefly_loader.js');
fs.writeFileSync(loader, content);
});
Expand Down
2 changes: 1 addition & 1 deletion src/fftools/config/web.xml
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@
</servlet-mapping>

<servlet>
<servlet-class>edu.caltech.ipac.firefly.server.servlets.SearchServices</servlet-class>
<servlet-class>edu.caltech.ipac.firefly.server.servlets.JsonSearchServices</servlet-class>
<servlet-name>FireFly SearchService</servlet-name>
</servlet>
<servlet-mapping>
Expand Down
14 changes: 3 additions & 11 deletions src/fftools/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,7 @@ require('babel/register');
var path = require('path');

var firefly_root = path.resolve(__dirname, '../..');
var name = 'fftools';
var entry = {fflib: path.resolve(firefly_root, 'src/firefly/js/fireflyJSLib.js')};

var config = {
name : 'fftools',
src : __dirname,
use_loader: false,
entry : {
fflib: path.resolve(firefly_root, 'src/firefly/js/fireflyJSLib.js')
},
firefly_dir : path.resolve(firefly_root, 'src/firefly')
};

module.exports = require(firefly_root + '/buildScript/webpack.config.js')(config);
module.exports = require(firefly_root + '/buildScript/webpack.config.js')({firefly_root, name, entry, user_loader: false});
2 changes: 1 addition & 1 deletion src/firefly/config/web.xml
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@
</servlet-mapping>

<servlet>
<servlet-class>edu.caltech.ipac.firefly.server.servlets.SearchServices</servlet-class>
<servlet-class>edu.caltech.ipac.firefly.server.servlets.JsonSearchServices</servlet-class>
<servlet-name>FireFly SearchService</servlet-name>
</servlet>
<servlet-mapping>
Expand Down
13 changes: 7 additions & 6 deletions src/firefly/html/css/global.css
Original file line number Diff line number Diff line change
Expand Up @@ -78,19 +78,20 @@
order: 3;
}

.button-std {
height: 23px;
.button {
padding: 0 3px;
margin-right: 3px;
}

.button-hl {
font-weight: bold;
.button.std {
height: 23px;
padding: 0 3px;
}

.button-std:hover, .button-hl:hover {
.button.hl {
font-weight: bold;
}

.button:hover {
cursor: pointer;
}

Expand Down
2 changes: 1 addition & 1 deletion src/firefly/html/firefly.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
window.firefly = {app: {}};
</script>

<!-- attached loaction for fftools app -->
<!-- attached loaction for firefly app -->
<div id='app'/>

<script type="text/javascript" src="firefly_loader.js"></script>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,9 @@ public void setAttribute(String key, Number value) {
public void setAttribute(String key, String value) {
attributes.put(key, value);
}
public void removeAttribute(String key) {
attributes.remove(key);
}


public void setWorldPtAttribute(String key, WorldPt pt) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
/*
* License information at https://github.com/Caltech-IPAC/firefly/blob/master/License.txt
*/
package edu.caltech.ipac.firefly.server.query;

import edu.caltech.ipac.firefly.data.*;
import edu.caltech.ipac.firefly.data.table.TableMeta;
import edu.caltech.ipac.firefly.server.util.Logger;
import edu.caltech.ipac.util.*;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

import java.io.*;
import java.util.*;


/**
* Subclasses of this processor return JSONObject. This helper class provides SearchProcessor's
* supported features and helper functions.
*
* @author loi
* @version $Id: IpacTablePartProcessor.java,v 1.33 2012/10/23 18:37:22 loi Exp $
*/
abstract public class JsonDataProcessor implements SearchProcessor<String> {

public static final boolean useWorkspace = AppProperties.getBooleanProperty("useWorkspace", false);

public static final Logger.LoggerImpl SEARCH_LOGGER = Logger.getLogger(Logger.SEARCH_LOGGER);
public static final Logger.LoggerImpl LOGGER = Logger.getLogger();

public ServerRequest inspectRequest(ServerRequest request) { return request; };

public void prepareTableMeta(TableMeta defaults, List<DataType> columns, ServerRequest request) {}

public QueryDescResolver getDescResolver() { return null;}

public void onComplete(ServerRequest request, String results) throws DataAccessException {}

public void writeData(OutputStream out, ServerRequest request) throws DataAccessException {}

public boolean doCache() { return false; }

public boolean doLogging() { return false; }


public String getUniqueID(ServerRequest request) {
String uid = request.getRequestId() + "-";

// parameters to get original data (before filter, sort, etc.)
List<Param> srvParams = new ArrayList<>();
for (Param p : request.getParams()) {
srvParams.add(p);
}

// sort by parameter name
Collections.sort(srvParams, (p1, p2) -> p1.getName().compareTo(p2.getName()));
for (Param p : srvParams) {
uid += "|" + p.toString();
}
return uid;
}

abstract public String getData(ServerRequest request) throws DataAccessException;


protected JSONArray toJsonArray(List values) {
JSONArray jAry = new JSONArray();
for (Object v : values) {
if (v instanceof List) {

} else if(v instanceof Map) {
jAry.add(toJsonObject((Map) v));
} else {
jAry.add(v);
}
}
return jAry;
}

protected JSONObject toJsonObject(Map values) {

JSONObject jObj = new JSONObject();
for (Object k : values.keySet()) {
String name = String.valueOf(k);
Object v = values.get(k);
if (v instanceof List) {
jObj.put(name, toJsonArray((List) v));
} else if(v instanceof Map) {
jObj.put(name, toJsonObject((Map) v));
} else {
jObj.put(name, v);
}
}
return jObj;
}

}

Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,7 @@
import edu.caltech.ipac.firefly.core.RPCException;
import edu.caltech.ipac.firefly.core.background.BackgroundState;
import edu.caltech.ipac.firefly.core.background.BackgroundStatus;
import edu.caltech.ipac.firefly.data.DownloadRequest;
import edu.caltech.ipac.firefly.data.FileStatus;
import edu.caltech.ipac.firefly.data.Request;
import edu.caltech.ipac.firefly.data.ServerParams;
import edu.caltech.ipac.firefly.data.ServerRequest;
import edu.caltech.ipac.firefly.data.TableServerRequest;
import edu.caltech.ipac.firefly.data.*;
import edu.caltech.ipac.firefly.data.table.RawDataSet;
import edu.caltech.ipac.firefly.data.table.TableMeta;
import edu.caltech.ipac.firefly.server.ServerContext;
Expand All @@ -23,11 +18,12 @@
import edu.caltech.ipac.firefly.server.util.QueryUtil;
import edu.caltech.ipac.firefly.server.util.ipactable.*;
import edu.caltech.ipac.util.Assert;
import edu.caltech.ipac.util.DataGroup;
import edu.caltech.ipac.util.IpacTableUtil;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import edu.caltech.ipac.util.IpacTableUtil;

import java.io.File;
import java.io.IOException;
Expand All @@ -43,59 +39,38 @@
public class SearchManager {
public static final Logger.LoggerImpl LOGGER = Logger.getLogger();


//====================================================================
// RPC.. returning RawDataSet
//====================================================================
public RawDataSet getRawDataSet(TableServerRequest request) throws DataAccessException {
SearchProcessor processor = getProcessor(request.getRequestId());
ServerRequest req = processor.inspectRequest(request);
if (req != null) {
DataGroupPart dgp = null;
try {
dgp = (DataGroupPart) processor.getData(req);
RawDataSet ds = QueryUtil.getRawDataSet(dgp);
DataGroupPart.State status = dgp.getTableDef().getStatus();
ds.getMeta().setIsLoaded(!status.equals(DataGroupPart.State.INPROGRESS));

processor.prepareTableMeta(ds.getMeta(),
Collections.unmodifiableList(dgp.getTableDef().getCols()),
req);

return ds;
} catch (Exception ex) {
String source = dgp != null && dgp.getTableDef() != null ? dgp.getTableDef().getSource() : "unknown";
String errMsg = ex.getClass().getSimpleName() + ":" + ex.getMessage() + " from:" + source ;
LOGGER.error(ex, errMsg);
throw new DataAccessException(errMsg, ex);
}
} else {
throw new DataAccessException("Request fail inspection. Operation aborted.");
}
DataGroupPart dgp = getDataGroup(request);
RawDataSet ds = QueryUtil.getRawDataSet(dgp);
// merge TableDef info into ds.meta
dgp.getTableDef().setMetaTo(ds.getMeta());
return ds;
}

public String getJsonString(TableServerRequest request) throws DataAccessException {
//====================================================================
// JSON.. top level handler, return JSON string.
//====================================================================
public String handleJsonRequest(TableServerRequest request) throws DataAccessException {
SearchProcessor processor = getProcessor(request.getRequestId());
ServerRequest req = processor.inspectRequest(request);
if (req != null) {
DataGroupPart dgp = null;
try {
dgp = (DataGroupPart) processor.getData(req);
TableMeta meta = new TableMeta();
DataGroupPart.State status = dgp.getTableDef().getStatus();
meta.setIsLoaded(!status.equals(DataGroupPart.State.INPROGRESS));

processor.prepareTableMeta(meta,
Collections.unmodifiableList(dgp.getTableDef().getCols()),
req);
JSONObject json = JsonTableUtil.toJsonTableModel(dgp, meta, request);
return json.toJSONString();
if (processor instanceof IpacTablePartProcessor) {
return jsonTablePartRequest(request);
} else if (processor instanceof JsonDataProcessor) {
return (String)processor.getData(request);
}
throw new DataAccessException("Unable to resolve a search processor for this request. Operation aborted:" + request.getRequestId());
}

} catch (Exception ex) {
String source = dgp != null && dgp.getTableDef() != null ? dgp.getTableDef().getSource() : "unknown";
String errMsg = ex.getClass().getSimpleName() + ":" + ex.getMessage() + " from:" + source ;
LOGGER.error(ex, errMsg);
throw new DataAccessException(errMsg, ex);
}
} else {
throw new DataAccessException("Request fail inspection. Operation aborted.");
private String jsonTablePartRequest(TableServerRequest request) throws DataAccessException {
try {
DataGroupPart dgp = getDataGroup(request);
JSONObject json = JsonTableUtil.toJsonTableModel(dgp, request);
return json.toJSONString();
} catch (IOException ex) {
LOGGER.error(ex);
throw new DataAccessException("Fail convert data to JSON.", ex);
}
}

Expand All @@ -121,13 +96,33 @@ public String getJSONData(ServerRequest request) throws DataAccessException {
}
}

//====================================================================
// search related funtions...
//====================================================================
public DataGroupPart getDataGroup(TableServerRequest request) throws DataAccessException {

SearchProcessor processor = getProcessor(request.getRequestId());
DataGroupPart dgp = null;
ServerRequest req = processor.inspectRequest(request);
if (req != null) {
DataGroupPart dgp = (DataGroupPart) processor.getData(req);
return dgp;
try {
dgp = (DataGroupPart) processor.getData(req);
TableMeta meta = new TableMeta();
DataGroupPart.State status = dgp.getTableDef().getStatus();
meta.setIsLoaded(!status.equals(DataGroupPart.State.INPROGRESS));

processor.prepareTableMeta(meta,
Collections.unmodifiableList(dgp.getTableDef().getCols()),
req);
// merge meta info with TableDef info
dgp.getTableDef().getMetaFrom(meta);
return dgp;
} catch (Exception ex) {
String source = dgp != null && dgp.getTableDef() != null ? dgp.getTableDef().getSource() : "unknown";
String errMsg = ex.getClass().getSimpleName() + ":" + ex.getMessage() + " from:" + source;
LOGGER.error(ex, errMsg);
throw new DataAccessException(errMsg, ex);
}
} else {
throw new DataAccessException("Request fail inspection. Operation aborted.");
}
Expand Down
Loading