implemented the full gridworks -> freebase conduit via delegated oauth and freeq/tripleloader
(still doesn't work as argus returns a 500 but the entire conduit is in place) git-svn-id: http://google-refine.googlecode.com/svn/trunk@519 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
parent
531431a869
commit
6990604981
@ -7,6 +7,7 @@
|
|||||||
<classpathentry kind="lib" path="lib/servlet-api-2.5.jar" sourcepath="lib-src/servlet-api-2.5-sources.jar"/>
|
<classpathentry kind="lib" path="lib/servlet-api-2.5.jar" sourcepath="lib-src/servlet-api-2.5-sources.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/jetty-6.1.22.jar" sourcepath="lib-src/jetty-6.1.22-sources.jar"/>
|
<classpathentry kind="lib" path="lib/jetty-6.1.22.jar" sourcepath="lib-src/jetty-6.1.22-sources.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/jetty-util-6.1.22.jar" sourcepath="lib-src/jetty-util-6.1.22-sources.jar"/>
|
<classpathentry kind="lib" path="lib/jetty-util-6.1.22.jar" sourcepath="lib-src/jetty-util-6.1.22-sources.jar"/>
|
||||||
|
<classpathentry kind="lib" path="lib/slf4j-api-1.5.6.jar" sourcepath="lib-src/slf4j-api-1.5.6-sources.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/log4j-1.2.15.jar" sourcepath="lib-src/log4j-1.2.15-sources.jar"/>
|
<classpathentry kind="lib" path="lib/log4j-1.2.15.jar" sourcepath="lib-src/log4j-1.2.15-sources.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/commons-codec-1.4.jar" sourcepath="lib-src/commons-codec-1.4-sources.jar"/>
|
<classpathentry kind="lib" path="lib/commons-codec-1.4.jar" sourcepath="lib-src/commons-codec-1.4-sources.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/commons-lang-2.5.jar" sourcepath="lib-src/commons-lang-2.5-sources.jar"/>
|
<classpathentry kind="lib" path="lib/commons-lang-2.5.jar" sourcepath="lib-src/commons-lang-2.5-sources.jar"/>
|
||||||
|
@ -96,9 +96,6 @@ licenses/datejs.LICENSE.txt
|
|||||||
licenses/imgareaselect.LICENSE.txt
|
licenses/imgareaselect.LICENSE.txt
|
||||||
imgareaselect
|
imgareaselect
|
||||||
|
|
||||||
licenses/blockui.LICENSE.txt
|
|
||||||
blockui
|
|
||||||
|
|
||||||
licenses/slf4j.LICENSE.txt
|
licenses/slf4j.LICENSE.txt
|
||||||
slf4j-api
|
slf4j-api
|
||||||
slf4j-log4j12
|
slf4j-log4j12
|
||||||
|
@ -59,6 +59,7 @@
|
|||||||
<javac srcdir="${server.src.dir}" destdir="${server_classes.dir}" debug="true" includeAntRuntime="no">
|
<javac srcdir="${server.src.dir}" destdir="${server_classes.dir}" debug="true" includeAntRuntime="no">
|
||||||
<classpath refid="class.path" />
|
<classpath refid="class.path" />
|
||||||
</javac>
|
</javac>
|
||||||
|
<copy file="${conf.dir}/log4j.properties" tofile="${server_classes.dir}/log4j.properties"/>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="build" depends="build_server">
|
<target name="build" depends="build_server">
|
||||||
@ -68,6 +69,7 @@
|
|||||||
<src path="${src.dir}"/>
|
<src path="${src.dir}"/>
|
||||||
<classpath refid="class.path" />
|
<classpath refid="class.path" />
|
||||||
</javac>
|
</javac>
|
||||||
|
<copy file="${conf.dir}/log4j.properties" tofile="${webapp_classes.dir}/log4j.properties"/>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="build_tests" depends="build">
|
<target name="build_tests" depends="build">
|
||||||
|
11
gridworks
11
gridworks
@ -46,6 +46,9 @@ where [options] include:
|
|||||||
-m <memory> max memory heap size to use
|
-m <memory> max memory heap size to use
|
||||||
default: 1024M
|
default: 1024M
|
||||||
|
|
||||||
|
-v <level> verbosity level [from low to high: error,warn,info,debug,trace]
|
||||||
|
default: info
|
||||||
|
|
||||||
--debug enable JVM debugging (on port 8000)
|
--debug enable JVM debugging (on port 8000)
|
||||||
|
|
||||||
--jmx enable JMX monitoring (for jconsole and jvisualvm)
|
--jmx enable JMX monitoring (for jconsole and jvisualvm)
|
||||||
@ -566,7 +569,7 @@ run() {
|
|||||||
RUN_CMD="$JAVA -cp $CLASSPATH $OPTS com.metaweb.gridworks.Gridworks"
|
RUN_CMD="$JAVA -cp $CLASSPATH $OPTS com.metaweb.gridworks.Gridworks"
|
||||||
|
|
||||||
#echo "$RUN_CMD"
|
#echo "$RUN_CMD"
|
||||||
#cd tooecho ""
|
#echo ""
|
||||||
|
|
||||||
echo "Starting Gridworks at 'http://${GRIDWORKS_HOST}:${GRIDWORKS_PORT}/'"
|
echo "Starting Gridworks at 'http://${GRIDWORKS_HOST}:${GRIDWORKS_PORT}/'"
|
||||||
echo ""
|
echo ""
|
||||||
@ -697,6 +700,7 @@ while [ $# -ne 0 ] ; do
|
|||||||
-w) shift; GRIDWORKS_WEBAPP="$1"; shift; continue;;
|
-w) shift; GRIDWORKS_WEBAPP="$1"; shift; continue;;
|
||||||
-d) shift; GRIDWORKS_DATA_DIR="$1"; shift; continue;;
|
-d) shift; GRIDWORKS_DATA_DIR="$1"; shift; continue;;
|
||||||
-m) shift; GRIDWORKS_MEMORY="$1"; shift; continue;;
|
-m) shift; GRIDWORKS_MEMORY="$1"; shift; continue;;
|
||||||
|
-v) shift; GRIDWORKS_VERBOSITY="$1"; shift; continue;;
|
||||||
--debug) shift; add_option '-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n'; continue;;
|
--debug) shift; add_option '-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n'; continue;;
|
||||||
--jmx) shift; add_option '-Dcom.sun.management.jmxremote'; continue;;
|
--jmx) shift; add_option '-Dcom.sun.management.jmxremote'; continue;;
|
||||||
-*) fail "Invalid option: $1";;
|
-*) fail "Invalid option: $1";;
|
||||||
@ -759,6 +763,11 @@ if [ -z "$GRIDWORKS_DIST_DIR" ]; then
|
|||||||
GRIDWORKS_DIST_DIR="dist"
|
GRIDWORKS_DIST_DIR="dist"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -z "$GRIDWORKS_VERBOSITY" ]; then
|
||||||
|
GRIDWORKS_VERBOSITY="info"
|
||||||
|
fi
|
||||||
|
add_option "-Dgridworks.verbosity=$GRIDWORKS_VERBOSITY"
|
||||||
|
|
||||||
if [ -z "$JYTHONPATH" ]; then
|
if [ -z "$JYTHONPATH" ]; then
|
||||||
JYTHONPATH="$GRIDWORKS_LIB_DIR/jython"
|
JYTHONPATH="$GRIDWORKS_LIB_DIR/jython"
|
||||||
else
|
else
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -1,20 +0,0 @@
|
|||||||
Copyright (c) 2007-2008 M. Alsup
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy of this software and associated documentation files (the
|
|
||||||
"Software"), to deal in the Software without restriction, including
|
|
||||||
without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
distribute, sublicense, and/or sell copies of the Software, and to
|
|
||||||
permit persons to whom the Software is furnished to do so, subject to
|
|
||||||
the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
|
||||||
included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
||||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
9
src/conf/log4j.properties
Normal file
9
src/conf/log4j.properties
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
log4j.rootLogger=INFO, console
|
||||||
|
log4j.logger.org.mortbay.log=WARN
|
||||||
|
log4j.logger.org.mortbay.jetty=ERROR
|
||||||
|
log4j.logger.org.apache.http.headers=WARN
|
||||||
|
log4j.logger.org.apache.http.impl=WARN
|
||||||
|
log4j.logger.org.apache.http.client=WARN
|
||||||
|
|
||||||
|
log4j.appender.console=org.apache.log4j.ConsoleAppender
|
||||||
|
log4j.appender.console.layout=com.metaweb.util.logging.IndentingLayout
|
@ -11,10 +11,13 @@ import javax.servlet.http.HttpServlet;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.metaweb.gridworks.commands.Command;
|
import com.metaweb.gridworks.commands.Command;
|
||||||
|
import com.metaweb.gridworks.commands.auth.AuthorizeCommand;
|
||||||
import com.metaweb.gridworks.commands.auth.CheckAuthorizationCommand;
|
import com.metaweb.gridworks.commands.auth.CheckAuthorizationCommand;
|
||||||
import com.metaweb.gridworks.commands.auth.DeAuthorizeCommand;
|
import com.metaweb.gridworks.commands.auth.DeAuthorizeCommand;
|
||||||
import com.metaweb.gridworks.commands.auth.AuthorizeCommand;
|
|
||||||
import com.metaweb.gridworks.commands.edit.AddColumnCommand;
|
import com.metaweb.gridworks.commands.edit.AddColumnCommand;
|
||||||
import com.metaweb.gridworks.commands.edit.AnnotateOneRowCommand;
|
import com.metaweb.gridworks.commands.edit.AnnotateOneRowCommand;
|
||||||
import com.metaweb.gridworks.commands.edit.AnnotateRowsCommand;
|
import com.metaweb.gridworks.commands.edit.AnnotateRowsCommand;
|
||||||
@ -35,6 +38,7 @@ import com.metaweb.gridworks.commands.edit.SplitColumnCommand;
|
|||||||
import com.metaweb.gridworks.commands.edit.SplitMultiValueCellsCommand;
|
import com.metaweb.gridworks.commands.edit.SplitMultiValueCellsCommand;
|
||||||
import com.metaweb.gridworks.commands.edit.TextTransformCommand;
|
import com.metaweb.gridworks.commands.edit.TextTransformCommand;
|
||||||
import com.metaweb.gridworks.commands.edit.UndoRedoCommand;
|
import com.metaweb.gridworks.commands.edit.UndoRedoCommand;
|
||||||
|
import com.metaweb.gridworks.commands.edit.UploadDataCommand;
|
||||||
import com.metaweb.gridworks.commands.info.ComputeClustersCommand;
|
import com.metaweb.gridworks.commands.info.ComputeClustersCommand;
|
||||||
import com.metaweb.gridworks.commands.info.ComputeFacetsCommand;
|
import com.metaweb.gridworks.commands.info.ComputeFacetsCommand;
|
||||||
import com.metaweb.gridworks.commands.info.ExportRowsCommand;
|
import com.metaweb.gridworks.commands.info.ExportRowsCommand;
|
||||||
@ -72,6 +76,8 @@ public class GridworksServlet extends HttpServlet {
|
|||||||
// timer for periodically saving projects
|
// timer for periodically saving projects
|
||||||
static protected Timer _timer;
|
static protected Timer _timer;
|
||||||
|
|
||||||
|
final Logger logger = LoggerFactory.getLogger("servlet");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
_commands.put("create-project-from-upload", new CreateProjectCommand());
|
_commands.put("create-project-from-upload", new CreateProjectCommand());
|
||||||
_commands.put("import-project", new ImportProjectCommand());
|
_commands.put("import-project", new ImportProjectCommand());
|
||||||
@ -137,11 +143,14 @@ public class GridworksServlet extends HttpServlet {
|
|||||||
_commands.put("check-authorization", new CheckAuthorizationCommand());
|
_commands.put("check-authorization", new CheckAuthorizationCommand());
|
||||||
_commands.put("authorize", new AuthorizeCommand());
|
_commands.put("authorize", new AuthorizeCommand());
|
||||||
_commands.put("deauthorize", new DeAuthorizeCommand());
|
_commands.put("deauthorize", new DeAuthorizeCommand());
|
||||||
|
|
||||||
|
_commands.put("upload-data", new UploadDataCommand());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init() throws ServletException {
|
public void init() throws ServletException {
|
||||||
super.init();
|
super.init();
|
||||||
|
logger.trace("> initialize");
|
||||||
|
|
||||||
ProjectManager.initialize();
|
ProjectManager.initialize();
|
||||||
|
|
||||||
@ -156,10 +165,14 @@ public class GridworksServlet extends HttpServlet {
|
|||||||
ProjectManager.singleton.save(false); // quick, potentially incomplete save
|
ProjectManager.singleton.save(false); // quick, potentially incomplete save
|
||||||
}
|
}
|
||||||
}, period, period);
|
}, period, period);
|
||||||
|
|
||||||
|
logger.trace("< initialize");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void destroy() {
|
public void destroy() {
|
||||||
|
logger.trace("> destroy");
|
||||||
|
|
||||||
// cancel automatic periodic saving and force a complete save.
|
// cancel automatic periodic saving and force a complete save.
|
||||||
if (_timer != null) {
|
if (_timer != null) {
|
||||||
_timer.cancel();
|
_timer.cancel();
|
||||||
@ -171,34 +184,41 @@ public class GridworksServlet extends HttpServlet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
super.destroy();
|
super.destroy();
|
||||||
|
|
||||||
|
logger.trace("< destroy");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
Command command = _commands.get(getCommandName(request));
|
String commandName = getCommandName(request);
|
||||||
|
Command command = _commands.get(commandName);
|
||||||
if (command != null) {
|
if (command != null) {
|
||||||
command.doPost(request, response);
|
logger.trace("> GET {}", commandName);
|
||||||
|
command.doGet(request, response);
|
||||||
|
logger.trace("< GET {}", commandName);
|
||||||
} else {
|
} else {
|
||||||
response.sendError(404);
|
response.sendError(404);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
Command command = _commands.get(getCommandName(request));
|
String commandName = getCommandName(request);
|
||||||
|
Command command = _commands.get(commandName);
|
||||||
if (command != null) {
|
if (command != null) {
|
||||||
command.doGet(request, response);
|
logger.trace("> POST {}", commandName);
|
||||||
|
command.doPost(request, response);
|
||||||
|
logger.trace("< POST {}", commandName);
|
||||||
} else {
|
} else {
|
||||||
response.sendError(404);
|
response.sendError(404);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String getCommandName(HttpServletRequest request) {
|
protected String getCommandName(HttpServletRequest request) {
|
||||||
/*
|
// Remove extraneous path segments that might be there for other purposes,
|
||||||
* Remove extraneous path segments that might be there for other purposes,
|
// e.g., for /export-rows/filename.ext, export-rows is the command while
|
||||||
* e.g., for /export-rows/filename.ext, export-rows is the command while
|
// filename.ext is only for the browser to prompt a convenient filename.
|
||||||
* filename.ext is only for the browser to prompt a convenient filename.
|
|
||||||
*/
|
|
||||||
String commandName = request.getPathInfo().substring(1);
|
String commandName = request.getPathInfo().substring(1);
|
||||||
int slash = commandName.indexOf('/');
|
int slash = commandName.indexOf('/');
|
||||||
return slash > 0 ? commandName.substring(0, slash) : commandName;
|
return slash > 0 ? commandName.substring(0, slash) : commandName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,6 +19,8 @@ import org.json.JSONException;
|
|||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.json.JSONTokener;
|
import org.json.JSONTokener;
|
||||||
import org.json.JSONWriter;
|
import org.json.JSONWriter;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.codeberry.jdatapath.DataPath;
|
import com.codeberry.jdatapath.DataPath;
|
||||||
import com.codeberry.jdatapath.JDataPathSystem;
|
import com.codeberry.jdatapath.JDataPathSystem;
|
||||||
@ -34,6 +36,8 @@ public class ProjectManager {
|
|||||||
protected Map<Long, ProjectMetadata> _projectsMetadata;
|
protected Map<Long, ProjectMetadata> _projectsMetadata;
|
||||||
protected List<String> _expressions;
|
protected List<String> _expressions;
|
||||||
|
|
||||||
|
final static Logger logger = LoggerFactory.getLogger("project_manager");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* While each project's metadata is loaded completely at start-up, each project's raw data
|
* While each project's metadata is loaded completely at start-up, each project's raw data
|
||||||
* is loaded only when the project is accessed by the user. This is because project
|
* is loaded only when the project is accessed by the user. This is because project
|
||||||
@ -52,7 +56,7 @@ public class ProjectManager {
|
|||||||
static public synchronized void initialize() {
|
static public synchronized void initialize() {
|
||||||
if (singleton == null) {
|
if (singleton == null) {
|
||||||
File dir = getProjectLocation();
|
File dir = getProjectLocation();
|
||||||
Gridworks.log("Using workspace directory: " + dir.getAbsolutePath());
|
logger.info("Using workspace directory: {}", dir.getAbsolutePath());
|
||||||
|
|
||||||
singleton = new ProjectManager(dir);
|
singleton = new ProjectManager(dir);
|
||||||
}
|
}
|
||||||
@ -83,9 +87,7 @@ public class ProjectManager {
|
|||||||
* environment variables and try our best to find a user-specific path.
|
* environment variables and try our best to find a user-specific path.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Gridworks.log(
|
logger.warn("Failed to use jdatapath to detect user data path: resorting to environment variables");
|
||||||
"Failed to use jdatapath to detect user data path. " +
|
|
||||||
"Resorting to environment variables.");
|
|
||||||
|
|
||||||
File parentDir = null;
|
File parentDir = null;
|
||||||
{
|
{
|
||||||
@ -289,7 +291,7 @@ public class ProjectManager {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|
||||||
Gridworks.log("Failed to save workspace.");
|
logger.warn("Failed to save workspace");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -305,7 +307,7 @@ public class ProjectManager {
|
|||||||
oldFile.delete();
|
oldFile.delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Gridworks.log("Saved workspace.");
|
logger.info("Saved workspace");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -397,7 +399,7 @@ public class ProjectManager {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Gridworks.log(allModified ?
|
logger.info(allModified ?
|
||||||
"Saving all modified projects ..." :
|
"Saving all modified projects ..." :
|
||||||
"Saving some modified projects ..."
|
"Saving some modified projects ..."
|
||||||
);
|
);
|
||||||
@ -456,7 +458,7 @@ public class ProjectManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected boolean loadFromFile(File file) {
|
protected boolean loadFromFile(File file) {
|
||||||
Gridworks.log("Loading workspace from " + file.getAbsolutePath());
|
logger.info("Loading workspace: {}", file.getAbsolutePath());
|
||||||
|
|
||||||
_projectsMetadata.clear();
|
_projectsMetadata.clear();
|
||||||
_expressions.clear();
|
_expressions.clear();
|
||||||
@ -482,14 +484,14 @@ public class ProjectManager {
|
|||||||
JSONUtilities.getStringList(obj, "expressions", _expressions);
|
JSONUtilities.getStringList(obj, "expressions", _expressions);
|
||||||
return true;
|
return true;
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
Gridworks.warn("Error reading " + file, e);
|
logger.warn("Error reading file", e);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Gridworks.warn("Error reading " + file, e);
|
logger.warn("Error reading file", e);
|
||||||
} finally {
|
} finally {
|
||||||
try {
|
try {
|
||||||
reader.close();
|
reader.close();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Gridworks.warn("Exception closing file",e);
|
logger.warn("Exception closing file",e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,8 @@ import org.json.JSONException;
|
|||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.json.JSONTokener;
|
import org.json.JSONTokener;
|
||||||
import org.json.JSONWriter;
|
import org.json.JSONWriter;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.metaweb.gridworks.util.JSONUtilities;
|
import com.metaweb.gridworks.util.JSONUtilities;
|
||||||
import com.metaweb.gridworks.util.ParsingUtilities;
|
import com.metaweb.gridworks.util.ParsingUtilities;
|
||||||
@ -30,6 +32,8 @@ public class ProjectMetadata implements Jsonizable {
|
|||||||
private int _encodingConfidence;
|
private int _encodingConfidence;
|
||||||
private List<String> _expressions = new LinkedList<String>();
|
private List<String> _expressions = new LinkedList<String>();
|
||||||
|
|
||||||
|
final Logger logger = LoggerFactory.getLogger("project_metadata");
|
||||||
|
|
||||||
protected ProjectMetadata(Date date) {
|
protected ProjectMetadata(Date date) {
|
||||||
_created = date;
|
_created = date;
|
||||||
}
|
}
|
||||||
@ -64,7 +68,7 @@ public class ProjectMetadata implements Jsonizable {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|
||||||
Gridworks.log("Failed to save project metadata");
|
logger.warn("Failed to save project metadata");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,8 +14,9 @@ import org.apache.commons.codec.binary.Base64;
|
|||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.json.JSONWriter;
|
import org.json.JSONWriter;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.metaweb.gridworks.Gridworks;
|
|
||||||
import com.metaweb.gridworks.browsing.FilteredRows;
|
import com.metaweb.gridworks.browsing.FilteredRows;
|
||||||
import com.metaweb.gridworks.browsing.filters.DualExpressionsNumberComparisonRowFilter;
|
import com.metaweb.gridworks.browsing.filters.DualExpressionsNumberComparisonRowFilter;
|
||||||
import com.metaweb.gridworks.browsing.filters.RowFilter;
|
import com.metaweb.gridworks.browsing.filters.RowFilter;
|
||||||
@ -109,6 +110,8 @@ public class ScatterplotFacet implements Facet {
|
|||||||
|
|
||||||
public static String EMPTY_IMAGE;
|
public static String EMPTY_IMAGE;
|
||||||
|
|
||||||
|
final static Logger logger = LoggerFactory.getLogger("scatterplot_facet");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
try {
|
try {
|
||||||
EMPTY_IMAGE = serializeImage(new BufferedImage(1, 1, BufferedImage.TYPE_4BYTE_ABGR));
|
EMPTY_IMAGE = serializeImage(new BufferedImage(1, 1, BufferedImage.TYPE_4BYTE_ABGR));
|
||||||
@ -302,7 +305,7 @@ public class ScatterplotFacet implements Facet {
|
|||||||
try {
|
try {
|
||||||
image = serializeImage(drawer.getImage());
|
image = serializeImage(drawer.getImage());
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Gridworks.warn("Exception caught while generating the image", e);
|
logger.warn("Exception caught while generating the image", e);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
image = EMPTY_IMAGE;
|
image = EMPTY_IMAGE;
|
||||||
@ -341,7 +344,7 @@ public class ScatterplotFacet implements Facet {
|
|||||||
try {
|
try {
|
||||||
eval = MetaParser.parse(expression);
|
eval = MetaParser.parse(expression);
|
||||||
} catch (ParsingException e) {
|
} catch (ParsingException e) {
|
||||||
Gridworks.warn("Error parsing expression",e);
|
logger.warn("Error parsing expression",e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
NumericBinIndex index = (NumericBinIndex) column.getPrecompute(key);
|
NumericBinIndex index = (NumericBinIndex) column.getPrecompute(key);
|
||||||
|
@ -14,8 +14,9 @@ import java.util.Map.Entry;
|
|||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.json.JSONWriter;
|
import org.json.JSONWriter;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.metaweb.gridworks.Gridworks;
|
|
||||||
import com.metaweb.gridworks.browsing.Engine;
|
import com.metaweb.gridworks.browsing.Engine;
|
||||||
import com.metaweb.gridworks.browsing.FilteredRows;
|
import com.metaweb.gridworks.browsing.FilteredRows;
|
||||||
import com.metaweb.gridworks.browsing.RowVisitor;
|
import com.metaweb.gridworks.browsing.RowVisitor;
|
||||||
@ -30,6 +31,8 @@ public class BinningClusterer extends Clusterer {
|
|||||||
|
|
||||||
static final protected Map<String, Keyer> _keyers = new HashMap<String, Keyer>();
|
static final protected Map<String, Keyer> _keyers = new HashMap<String, Keyer>();
|
||||||
|
|
||||||
|
final static Logger logger = LoggerFactory.getLogger("binning_clusterer");
|
||||||
|
|
||||||
List<Map<String,Integer>> _clusters;
|
List<Map<String,Integer>> _clusters;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
@ -54,7 +57,7 @@ public class BinningClusterer extends Clusterer {
|
|||||||
if (k instanceof NGramFingerprintKeyer) {
|
if (k instanceof NGramFingerprintKeyer) {
|
||||||
try {
|
try {
|
||||||
int size = _config.getJSONObject("params").getInt("ngram-size");
|
int size = _config.getJSONObject("params").getInt("ngram-size");
|
||||||
Gridworks.log("Using ngram size: " + size);
|
logger.debug("Using ngram size: {}", size);
|
||||||
_params = new Object[1];
|
_params = new Object[1];
|
||||||
_params[0] = size;
|
_params[0] = size;
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
|
@ -15,8 +15,9 @@ import java.util.Map.Entry;
|
|||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.json.JSONWriter;
|
import org.json.JSONWriter;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.metaweb.gridworks.Gridworks;
|
|
||||||
import com.metaweb.gridworks.browsing.Engine;
|
import com.metaweb.gridworks.browsing.Engine;
|
||||||
import com.metaweb.gridworks.browsing.FilteredRows;
|
import com.metaweb.gridworks.browsing.FilteredRows;
|
||||||
import com.metaweb.gridworks.browsing.RowVisitor;
|
import com.metaweb.gridworks.browsing.RowVisitor;
|
||||||
@ -47,6 +48,8 @@ public class kNNClusterer extends Clusterer {
|
|||||||
|
|
||||||
Map<Serializable, Integer> _counts = new HashMap<Serializable, Integer>();
|
Map<Serializable, Integer> _counts = new HashMap<Serializable, Integer>();
|
||||||
|
|
||||||
|
final static Logger logger = LoggerFactory.getLogger("kNN_clusterer");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
_distances.put("levenshtein", new LevenshteinDistance());
|
_distances.put("levenshtein", new LevenshteinDistance());
|
||||||
_distances.put("jaccard", new JaccardDistance());
|
_distances.put("jaccard", new JaccardDistance());
|
||||||
@ -109,11 +112,11 @@ public class kNNClusterer extends Clusterer {
|
|||||||
try {
|
try {
|
||||||
JSONObject params = o.getJSONObject("params");
|
JSONObject params = o.getJSONObject("params");
|
||||||
_radius = params.getDouble("radius");
|
_radius = params.getDouble("radius");
|
||||||
Gridworks.warn("Use radius: " + _radius);
|
logger.debug("Use radius: {}", _radius);
|
||||||
_blockingNgramSize = params.getInt("blocking-ngram-size");
|
_blockingNgramSize = params.getInt("blocking-ngram-size");
|
||||||
Gridworks.warn("Use blocking ngram size: " + _blockingNgramSize);
|
logger.debug("Use blocking ngram size: {}",_blockingNgramSize);
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
Gridworks.warn("No parameters found, using defaults");
|
logger.debug("No parameters found, using defaults");
|
||||||
}
|
}
|
||||||
_clusterer = new NGramClusterer(_distance, _blockingNgramSize);
|
_clusterer = new NGramClusterer(_distance, _blockingNgramSize);
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,8 @@ import org.apache.commons.lang.NotImplementedException;
|
|||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.json.JSONWriter;
|
import org.json.JSONWriter;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.metaweb.gridworks.Jsonizable;
|
import com.metaweb.gridworks.Jsonizable;
|
||||||
import com.metaweb.gridworks.ProjectManager;
|
import com.metaweb.gridworks.ProjectManager;
|
||||||
@ -28,6 +30,9 @@ import com.metaweb.gridworks.util.ParsingUtilities;
|
|||||||
* are AJAX calls.
|
* are AJAX calls.
|
||||||
*/
|
*/
|
||||||
public abstract class Command {
|
public abstract class Command {
|
||||||
|
|
||||||
|
final static protected Logger logger = LoggerFactory.getLogger("command");
|
||||||
|
|
||||||
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||||
throws ServletException, IOException {
|
throws ServletException, IOException {
|
||||||
|
|
||||||
@ -50,10 +55,7 @@ public abstract class Command {
|
|||||||
*/
|
*/
|
||||||
static protected JSONObject getEngineConfig(HttpServletRequest request) throws Exception {
|
static protected JSONObject getEngineConfig(HttpServletRequest request) throws Exception {
|
||||||
String json = request.getParameter("engine");
|
String json = request.getParameter("engine");
|
||||||
if (json != null) {
|
return (json == null) ? null : ParsingUtilities.evaluateJsonStringToObject(json);
|
||||||
return ParsingUtilities.evaluateJsonStringToObject(json);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -108,10 +110,9 @@ public abstract class Command {
|
|||||||
String value = request.getParameter(name);
|
String value = request.getParameter(name);
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
try {
|
try {
|
||||||
JSONObject o = ParsingUtilities.evaluateJsonStringToObject(value);
|
return ParsingUtilities.evaluateJsonStringToObject(value);
|
||||||
|
|
||||||
return o;
|
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
|
logger.warn("error getting json parameter",e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@ -123,15 +124,22 @@ public abstract class Command {
|
|||||||
Project project,
|
Project project,
|
||||||
Process process
|
Process process
|
||||||
) throws Exception {
|
) throws Exception {
|
||||||
|
response.setCharacterEncoding("UTF-8");
|
||||||
|
response.setHeader("Content-Type", "application/json");
|
||||||
|
|
||||||
HistoryEntry historyEntry = project.processManager.queueProcess(process);
|
HistoryEntry historyEntry = project.processManager.queueProcess(process);
|
||||||
if (historyEntry != null) {
|
if (historyEntry != null) {
|
||||||
JSONWriter writer = new JSONWriter(response.getWriter());
|
Writer w = response.getWriter();
|
||||||
|
JSONWriter writer = new JSONWriter(w);
|
||||||
Properties options = new Properties();
|
Properties options = new Properties();
|
||||||
|
|
||||||
writer.object();
|
writer.object();
|
||||||
writer.key("code"); writer.value("ok");
|
writer.key("code"); writer.value("ok");
|
||||||
writer.key("historyEntry"); historyEntry.write(writer, options);
|
writer.key("historyEntry"); historyEntry.write(writer, options);
|
||||||
writer.endObject();
|
writer.endObject();
|
||||||
|
|
||||||
|
w.flush();
|
||||||
|
w.close();
|
||||||
} else {
|
} else {
|
||||||
respond(response, "{ \"code\" : \"pending\" }");
|
respond(response, "{ \"code\" : \"pending\" }");
|
||||||
}
|
}
|
||||||
@ -140,8 +148,25 @@ public abstract class Command {
|
|||||||
static protected void respond(HttpServletResponse response, String content)
|
static protected void respond(HttpServletResponse response, String content)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
|
|
||||||
|
response.setCharacterEncoding("UTF-8");
|
||||||
response.setStatus(HttpServletResponse.SC_OK);
|
response.setStatus(HttpServletResponse.SC_OK);
|
||||||
response.getWriter().write(content);
|
Writer w = response.getWriter();
|
||||||
|
w.write(content);
|
||||||
|
w.flush();
|
||||||
|
w.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
static protected void respond(HttpServletResponse response, String status, String message)
|
||||||
|
throws IOException, JSONException {
|
||||||
|
|
||||||
|
Writer w = response.getWriter();
|
||||||
|
JSONWriter writer = new JSONWriter(w);
|
||||||
|
writer.object();
|
||||||
|
writer.key("status"); writer.value(status);
|
||||||
|
writer.key("message"); writer.value(message);
|
||||||
|
writer.endObject();
|
||||||
|
w.flush();
|
||||||
|
w.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
static protected void respondJSON(HttpServletResponse response, Jsonizable o)
|
static protected void respondJSON(HttpServletResponse response, Jsonizable o)
|
||||||
@ -157,15 +182,19 @@ public abstract class Command {
|
|||||||
response.setCharacterEncoding("UTF-8");
|
response.setCharacterEncoding("UTF-8");
|
||||||
response.setHeader("Content-Type", "application/json");
|
response.setHeader("Content-Type", "application/json");
|
||||||
|
|
||||||
JSONWriter writer = new JSONWriter(response.getWriter());
|
Writer w = response.getWriter();
|
||||||
|
JSONWriter writer = new JSONWriter(w);
|
||||||
|
|
||||||
o.write(writer, options);
|
o.write(writer, options);
|
||||||
|
w.flush();
|
||||||
|
w.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
static protected void respondException(HttpServletResponse response, Exception e)
|
static protected void respondException(HttpServletResponse response, Exception e)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
|
|
||||||
e.printStackTrace();
|
logger.warn("Exception caught", e);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
JSONObject o = new JSONObject();
|
JSONObject o = new JSONObject();
|
||||||
o.put("code", "error");
|
o.put("code", "error");
|
||||||
@ -179,6 +208,7 @@ public abstract class Command {
|
|||||||
|
|
||||||
o.put("stack", sw.toString());
|
o.put("stack", sw.toString());
|
||||||
|
|
||||||
|
response.setCharacterEncoding("UTF-8");
|
||||||
response.setHeader("Content-Type", "application/json");
|
response.setHeader("Content-Type", "application/json");
|
||||||
respond(response, o.toString());
|
respond(response, o.toString());
|
||||||
} catch (JSONException e1) {
|
} catch (JSONException e1) {
|
||||||
@ -187,12 +217,7 @@ public abstract class Command {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static protected void redirect(HttpServletResponse response, String url) throws IOException {
|
static protected void redirect(HttpServletResponse response, String url) throws IOException {
|
||||||
response.setStatus(HttpServletResponse.SC_OK);
|
response.sendRedirect(url);
|
||||||
|
|
||||||
Writer writer = response.getWriter();
|
|
||||||
writer.write("<html><head>");
|
|
||||||
writer.write("<meta http-equiv=\"refresh\" content=\"1;url=" + url + "\">");
|
|
||||||
writer.write("</head><body></body></html>");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
package com.metaweb.gridworks.commands.auth;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
|
|
||||||
import org.json.JSONException;
|
|
||||||
import org.json.JSONWriter;
|
|
||||||
|
|
||||||
import com.metaweb.gridworks.commands.Command;
|
|
||||||
import com.metaweb.gridworks.oauth.OAuthUtilities;
|
|
||||||
import com.metaweb.gridworks.oauth.Provider;
|
|
||||||
|
|
||||||
public class AuthorizationCommand extends Command {
|
|
||||||
|
|
||||||
private static final String PROVIDER_PARAM = "provider";
|
|
||||||
|
|
||||||
protected void respond(HttpServletResponse response, String status, String message) throws IOException, JSONException {
|
|
||||||
JSONWriter writer = new JSONWriter(response.getWriter());
|
|
||||||
writer.object();
|
|
||||||
writer.key("status"); writer.value(status);
|
|
||||||
writer.key("message"); writer.value(message);
|
|
||||||
writer.endObject();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected Provider getProvider(HttpServletRequest request) {
|
|
||||||
String provider_str = request.getParameter(PROVIDER_PARAM);
|
|
||||||
Provider provider = OAuthUtilities.getProvider(request.getParameter(PROVIDER_PARAM));
|
|
||||||
if (provider == null) throw new RuntimeException("Can't find OAuth provider '" + provider_str + "'");
|
|
||||||
return provider;
|
|
||||||
}
|
|
||||||
}
|
|
@ -11,26 +11,28 @@ import oauth.signpost.OAuthConsumer;
|
|||||||
import oauth.signpost.OAuthProvider;
|
import oauth.signpost.OAuthProvider;
|
||||||
|
|
||||||
import com.metaweb.gridworks.Gridworks;
|
import com.metaweb.gridworks.Gridworks;
|
||||||
|
import com.metaweb.gridworks.commands.Command;
|
||||||
import com.metaweb.gridworks.oauth.Credentials;
|
import com.metaweb.gridworks.oauth.Credentials;
|
||||||
import com.metaweb.gridworks.oauth.OAuthUtilities;
|
import com.metaweb.gridworks.oauth.OAuthUtilities;
|
||||||
import com.metaweb.gridworks.oauth.Provider;
|
import com.metaweb.gridworks.oauth.Provider;
|
||||||
|
|
||||||
public class AuthorizeCommand extends AuthorizationCommand {
|
public class AuthorizeCommand extends Command {
|
||||||
|
|
||||||
private static final String OAUTH_VERIFIER_PARAM = "oauth_verifier";
|
private static final String OAUTH_VERIFIER_PARAM = "oauth_verifier";
|
||||||
|
|
||||||
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
try {
|
|
||||||
|
|
||||||
// get the provider from the request
|
// get the provider from the request
|
||||||
Provider provider = getProvider(request);
|
Provider provider = OAuthUtilities.getProvider(request);
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
// see if the request comes with access credentials
|
// see if the request comes with access credentials
|
||||||
Credentials access_credentials = Credentials.getCredentials(request, provider, Credentials.Type.ACCESS);
|
Credentials access_credentials = Credentials.getCredentials(request, provider, Credentials.Type.ACCESS);
|
||||||
|
|
||||||
// prepare the continuation URL that the OAuth provider will redirect the user to
|
// prepare the continuation URL that the OAuth provider will redirect the user to
|
||||||
// (we need to make sure this URL points back to this code or the dance will never complete)
|
// (we need to make sure this URL points back to this code or the dance will never complete)
|
||||||
String callbackURL = Gridworks.getURL() + "/command/authorize";
|
String callbackURL = Gridworks.getURL() + "/command/authorize/" + provider.getHost();
|
||||||
|
|
||||||
if (access_credentials == null) {
|
if (access_credentials == null) {
|
||||||
// access credentials are not available so we need to check
|
// access credentials are not available so we need to check
|
||||||
@ -39,7 +41,7 @@ public class AuthorizeCommand extends AuthorizationCommand {
|
|||||||
// get the request token credentials
|
// get the request token credentials
|
||||||
Credentials request_credentials = Credentials.getCredentials(request, provider, Credentials.Type.REQUEST);
|
Credentials request_credentials = Credentials.getCredentials(request, provider, Credentials.Type.REQUEST);
|
||||||
|
|
||||||
OAuthConsumer consumer = OAuthUtilities.getConsumer(provider);
|
OAuthConsumer consumer = OAuthUtilities.getConsumer(request_credentials, provider);
|
||||||
OAuthProvider pp = OAuthUtilities.getOAuthProvider(provider);
|
OAuthProvider pp = OAuthUtilities.getOAuthProvider(provider);
|
||||||
|
|
||||||
if (request_credentials == null) {
|
if (request_credentials == null) {
|
||||||
@ -95,6 +97,8 @@ public class AuthorizeCommand extends AuthorizationCommand {
|
|||||||
finish(response);
|
finish(response);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
Credentials.deleteCredentials(request, response, provider, Credentials.Type.REQUEST);
|
||||||
|
Credentials.deleteCredentials(request, response, provider, Credentials.Type.ACCESS);
|
||||||
respondException(response, e);
|
respondException(response, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,34 +1,28 @@
|
|||||||
package com.metaweb.gridworks.commands.auth;
|
package com.metaweb.gridworks.commands.auth;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import oauth.signpost.OAuthConsumer;
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import org.apache.http.HttpResponse;
|
import com.metaweb.gridworks.commands.Command;
|
||||||
import org.apache.http.client.HttpClient;
|
|
||||||
import org.apache.http.client.methods.HttpGet;
|
|
||||||
import org.apache.http.impl.client.DefaultHttpClient;
|
|
||||||
import org.apache.http.params.CoreProtocolPNames;
|
|
||||||
|
|
||||||
import com.metaweb.gridworks.Gridworks;
|
|
||||||
import com.metaweb.gridworks.oauth.Credentials;
|
import com.metaweb.gridworks.oauth.Credentials;
|
||||||
import com.metaweb.gridworks.oauth.OAuthUtilities;
|
import com.metaweb.gridworks.oauth.OAuthUtilities;
|
||||||
import com.metaweb.gridworks.oauth.Provider;
|
import com.metaweb.gridworks.oauth.Provider;
|
||||||
import com.metaweb.gridworks.util.IOUtils;
|
import com.metaweb.gridworks.util.FreebaseUtils;
|
||||||
|
|
||||||
public class CheckAuthorizationCommand extends AuthorizationCommand {
|
public class CheckAuthorizationCommand extends Command {
|
||||||
|
|
||||||
|
final static Logger logger = LoggerFactory.getLogger("check-authorization_command");
|
||||||
|
|
||||||
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
Provider provider = OAuthUtilities.getProvider(request);
|
||||||
Provider provider = getProvider(request);
|
|
||||||
|
|
||||||
// this cookie should not be there, but this is good hygiene practice
|
// this cookie should not be there, but this is good hygiene practice
|
||||||
Credentials.deleteCredentials(request, response, provider, Credentials.Type.REQUEST);
|
Credentials.deleteCredentials(request, response, provider, Credentials.Type.REQUEST);
|
||||||
@ -39,30 +33,15 @@ public class CheckAuthorizationCommand extends AuthorizationCommand {
|
|||||||
response.setHeader("Content-Type", "application/json");
|
response.setHeader("Content-Type", "application/json");
|
||||||
|
|
||||||
if (access_credentials != null) {
|
if (access_credentials != null) {
|
||||||
Gridworks.log(access_credentials.toString());
|
String user_info = FreebaseUtils.getUserInfo(access_credentials, provider);
|
||||||
|
response.getWriter().write(user_info);
|
||||||
OAuthConsumer consumer = OAuthUtilities.getConsumer(access_credentials, provider);
|
} else {
|
||||||
|
|
||||||
HttpGet httpRequest = new HttpGet("http://" + provider.getHost() + "/api/service/user_info");
|
|
||||||
httpRequest.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "Gridworks " + Gridworks.getVersion());
|
|
||||||
|
|
||||||
// this is required by the Metaweb API to avoid XSS
|
|
||||||
httpRequest.setHeader("X-Requested-With", "1");
|
|
||||||
|
|
||||||
consumer.sign(request);
|
|
||||||
|
|
||||||
HttpClient httpClient = new DefaultHttpClient();
|
|
||||||
HttpResponse httpResponse = httpClient.execute(httpRequest);
|
|
||||||
OutputStream output = response.getOutputStream();
|
|
||||||
InputStream input = httpResponse.getEntity().getContent();
|
|
||||||
IOUtils.copy(input, output);
|
|
||||||
input.close();
|
|
||||||
output.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
respond(response, "401 Unauthorized", "You don't have the right credentials");
|
respond(response, "401 Unauthorized", "You don't have the right credentials");
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
logger.info("error",e);
|
||||||
respondException(response, e);
|
respondException(response, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -6,10 +6,12 @@ import javax.servlet.ServletException;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import com.metaweb.gridworks.commands.Command;
|
||||||
import com.metaweb.gridworks.oauth.Credentials;
|
import com.metaweb.gridworks.oauth.Credentials;
|
||||||
|
import com.metaweb.gridworks.oauth.OAuthUtilities;
|
||||||
import com.metaweb.gridworks.oauth.Provider;
|
import com.metaweb.gridworks.oauth.Provider;
|
||||||
|
|
||||||
public class DeAuthorizeCommand extends AuthorizationCommand {
|
public class DeAuthorizeCommand extends Command {
|
||||||
|
|
||||||
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
|
|
||||||
@ -17,7 +19,7 @@ public class DeAuthorizeCommand extends AuthorizationCommand {
|
|||||||
response.setCharacterEncoding("UTF-8");
|
response.setCharacterEncoding("UTF-8");
|
||||||
response.setHeader("Content-Type", "application/json");
|
response.setHeader("Content-Type", "application/json");
|
||||||
|
|
||||||
Provider provider = getProvider(request);
|
Provider provider = OAuthUtilities.getProvider(request);
|
||||||
|
|
||||||
Credentials.deleteCredentials(request, response, provider, Credentials.Type.ACCESS);
|
Credentials.deleteCredentials(request, response, provider, Credentials.Type.ACCESS);
|
||||||
|
|
||||||
|
@ -36,6 +36,8 @@ import org.apache.commons.fileupload.util.Streams;
|
|||||||
import org.apache.tools.bzip2.CBZip2InputStream;
|
import org.apache.tools.bzip2.CBZip2InputStream;
|
||||||
import org.apache.tools.tar.TarEntry;
|
import org.apache.tools.tar.TarEntry;
|
||||||
import org.apache.tools.tar.TarInputStream;
|
import org.apache.tools.tar.TarInputStream;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.ibm.icu.text.CharsetDetector;
|
import com.ibm.icu.text.CharsetDetector;
|
||||||
import com.ibm.icu.text.CharsetMatch;
|
import com.ibm.icu.text.CharsetMatch;
|
||||||
@ -54,6 +56,8 @@ import com.metaweb.gridworks.util.ParsingUtilities;
|
|||||||
|
|
||||||
public class CreateProjectCommand extends Command {
|
public class CreateProjectCommand extends Command {
|
||||||
|
|
||||||
|
final static Logger logger = LoggerFactory.getLogger("create-project_command");
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||||
throws ServletException, IOException {
|
throws ServletException, IOException {
|
||||||
@ -164,7 +168,7 @@ public class CreateProjectCommand extends Command {
|
|||||||
InputStream inputStream
|
InputStream inputStream
|
||||||
) throws Exception {
|
) throws Exception {
|
||||||
|
|
||||||
Gridworks.info("Importing " + fileName + "");
|
logger.info("Importing '{}'", fileName);
|
||||||
|
|
||||||
if (fileName.endsWith(".zip") || fileName.endsWith(".tar.gz") || fileName.endsWith(".tgz") || fileName.endsWith(".tar.bz2")) {
|
if (fileName.endsWith(".zip") || fileName.endsWith(".tar.gz") || fileName.endsWith(".tgz") || fileName.endsWith(".tar.bz2")) {
|
||||||
|
|
||||||
@ -236,7 +240,8 @@ public class CreateProjectCommand extends Command {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Gridworks.log("Most frequent extensions: " + exts.toString());
|
|
||||||
|
logger.info("Most frequent extensions: {}", exts.toString());
|
||||||
|
|
||||||
// second pass, load the data for real
|
// second pass, load the data for real
|
||||||
is = getStream(fileName, new FileInputStream(file));
|
is = getStream(fileName, new FileInputStream(file));
|
||||||
@ -399,10 +404,7 @@ public class CreateProjectCommand extends Command {
|
|||||||
options.setProperty("encoding", charsetMatch.getName());
|
options.setProperty("encoding", charsetMatch.getName());
|
||||||
options.setProperty("encoding_confidence", Integer.toString(charsetMatch.getConfidence()));
|
options.setProperty("encoding_confidence", Integer.toString(charsetMatch.getConfidence()));
|
||||||
|
|
||||||
Gridworks.log(
|
logger.info("Best encoding guess: {} [confidence: {}]", charsetMatch.getName(), charsetMatch.getConfidence());
|
||||||
"Best encoding guess: " +
|
|
||||||
charsetMatch.getName() +
|
|
||||||
" [confidence: " + charsetMatch.getConfidence() + "]");
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
} catch (UnsupportedEncodingException e) {
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
@ -19,8 +19,9 @@ import org.apache.commons.fileupload.servlet.ServletFileUpload;
|
|||||||
import org.apache.commons.fileupload.util.Streams;
|
import org.apache.commons.fileupload.util.Streams;
|
||||||
import org.apache.tools.tar.TarEntry;
|
import org.apache.tools.tar.TarEntry;
|
||||||
import org.apache.tools.tar.TarInputStream;
|
import org.apache.tools.tar.TarInputStream;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.metaweb.gridworks.Gridworks;
|
|
||||||
import com.metaweb.gridworks.ProjectManager;
|
import com.metaweb.gridworks.ProjectManager;
|
||||||
import com.metaweb.gridworks.ProjectMetadata;
|
import com.metaweb.gridworks.ProjectMetadata;
|
||||||
import com.metaweb.gridworks.commands.Command;
|
import com.metaweb.gridworks.commands.Command;
|
||||||
@ -29,6 +30,8 @@ import com.metaweb.gridworks.util.ParsingUtilities;
|
|||||||
|
|
||||||
public class ImportProjectCommand extends Command {
|
public class ImportProjectCommand extends Command {
|
||||||
|
|
||||||
|
final static Logger logger = LoggerFactory.getLogger("import-project_command");
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||||
throws ServletException, IOException {
|
throws ServletException, IOException {
|
||||||
@ -37,7 +40,7 @@ public class ImportProjectCommand extends Command {
|
|||||||
Properties options = ParsingUtilities.parseUrlParameters(request);
|
Properties options = ParsingUtilities.parseUrlParameters(request);
|
||||||
|
|
||||||
long projectID = Project.generateID();
|
long projectID = Project.generateID();
|
||||||
Gridworks.log("Importing existing project using new ID " + projectID);
|
logger.info("Importing existing project using new ID {}", projectID);
|
||||||
|
|
||||||
internalImport(request, options, projectID);
|
internalImport(request, options, projectID);
|
||||||
|
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
package com.metaweb.gridworks.commands.edit;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.StringWriter;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import com.metaweb.gridworks.browsing.Engine;
|
||||||
|
import com.metaweb.gridworks.commands.Command;
|
||||||
|
import com.metaweb.gridworks.exporters.TripleloaderExporter;
|
||||||
|
import com.metaweb.gridworks.model.Project;
|
||||||
|
import com.metaweb.gridworks.util.FreebaseUtils;
|
||||||
|
|
||||||
|
public class UploadDataCommand extends Command {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||||
|
throws ServletException, IOException {
|
||||||
|
|
||||||
|
try {
|
||||||
|
Project project = getProject(request);
|
||||||
|
Engine engine = getEngine(request, project);
|
||||||
|
TripleloaderExporter exporter = new TripleloaderExporter();
|
||||||
|
StringWriter triples = new StringWriter(1024 * 10);
|
||||||
|
exporter.export(project, new Properties(), engine, triples);
|
||||||
|
|
||||||
|
String info = request.getParameter("info");
|
||||||
|
|
||||||
|
String result = FreebaseUtils.uploadTriples(request, info, triples.toString());
|
||||||
|
|
||||||
|
response.setCharacterEncoding("UTF-8");
|
||||||
|
response.setHeader("Content-Type", "application/json");
|
||||||
|
|
||||||
|
try {
|
||||||
|
new JSONObject(result);
|
||||||
|
response.getWriter().write(result);
|
||||||
|
} catch (JSONException e) {
|
||||||
|
respond(response,"500 Error", result);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
respondException(response, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -7,8 +7,9 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.metaweb.gridworks.Gridworks;
|
|
||||||
import com.metaweb.gridworks.browsing.Engine;
|
import com.metaweb.gridworks.browsing.Engine;
|
||||||
import com.metaweb.gridworks.clustering.Clusterer;
|
import com.metaweb.gridworks.clustering.Clusterer;
|
||||||
import com.metaweb.gridworks.clustering.binning.BinningClusterer;
|
import com.metaweb.gridworks.clustering.binning.BinningClusterer;
|
||||||
@ -18,6 +19,8 @@ import com.metaweb.gridworks.model.Project;
|
|||||||
|
|
||||||
public class ComputeClustersCommand extends Command {
|
public class ComputeClustersCommand extends Command {
|
||||||
|
|
||||||
|
final static Logger logger = LoggerFactory.getLogger("compute-clusters_command");
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||||
throws ServletException, IOException {
|
throws ServletException, IOException {
|
||||||
@ -42,7 +45,7 @@ public class ComputeClustersCommand extends Command {
|
|||||||
clusterer.computeClusters(engine);
|
clusterer.computeClusters(engine);
|
||||||
|
|
||||||
respondJSON(response, clusterer);
|
respondJSON(response, clusterer);
|
||||||
Gridworks.log("computed clusters [" + type + "," + clusterer_conf.getString("function") + "] in " + (System.currentTimeMillis() - start) + "ms");
|
logger.info("computed clusters [{},{}] in {}ms", new Object[] { type, clusterer_conf.getString("function"), Long.toString(System.currentTimeMillis() - start) });
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
respondException(response, e);
|
respondException(response, e);
|
||||||
}
|
}
|
||||||
|
@ -13,8 +13,9 @@ import javax.servlet.http.HttpServletResponse;
|
|||||||
|
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.metaweb.gridworks.Gridworks;
|
|
||||||
import com.metaweb.gridworks.browsing.Engine;
|
import com.metaweb.gridworks.browsing.Engine;
|
||||||
import com.metaweb.gridworks.browsing.FilteredRows;
|
import com.metaweb.gridworks.browsing.FilteredRows;
|
||||||
import com.metaweb.gridworks.browsing.facets.NumericBinIndex;
|
import com.metaweb.gridworks.browsing.facets.NumericBinIndex;
|
||||||
@ -29,6 +30,8 @@ import com.metaweb.gridworks.model.Project;
|
|||||||
|
|
||||||
public class GetScatterplotCommand extends Command {
|
public class GetScatterplotCommand extends Command {
|
||||||
|
|
||||||
|
final static Logger logger = LoggerFactory.getLogger("get-scatterplot_command");
|
||||||
|
|
||||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||||
throws ServletException, IOException {
|
throws ServletException, IOException {
|
||||||
|
|
||||||
@ -50,7 +53,7 @@ public class GetScatterplotCommand extends Command {
|
|||||||
sos.close();
|
sos.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
Gridworks.log("Drawn scatterplot in " + (System.currentTimeMillis() - start) + "ms");
|
logger.info("Drawn scatterplot in {} ms", Long.toString(System.currentTimeMillis() - start));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
respondException(response, e);
|
respondException(response, e);
|
||||||
@ -97,7 +100,7 @@ public class GetScatterplotCommand extends Command {
|
|||||||
try {
|
try {
|
||||||
eval_x = MetaParser.parse(expression_x);
|
eval_x = MetaParser.parse(expression_x);
|
||||||
} catch (ParsingException e) {
|
} catch (ParsingException e) {
|
||||||
Gridworks.warn("error parsing expression", e);
|
logger.warn("error parsing expression", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
String columnName_y = o.getString(ScatterplotFacet.Y_COLUMN_NAME);
|
String columnName_y = o.getString(ScatterplotFacet.Y_COLUMN_NAME);
|
||||||
@ -115,7 +118,7 @@ public class GetScatterplotCommand extends Command {
|
|||||||
try {
|
try {
|
||||||
eval_y = MetaParser.parse(expression_y);
|
eval_y = MetaParser.parse(expression_y);
|
||||||
} catch (ParsingException e) {
|
} catch (ParsingException e) {
|
||||||
Gridworks.warn("error parsing expression", e);
|
logger.warn("error parsing expression", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
NumericBinIndex index_x = null;
|
NumericBinIndex index_x = null;
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
package com.metaweb.gridworks.expr.functions;
|
package com.metaweb.gridworks.expr.functions;
|
||||||
|
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import org.json.JSONException;
|
|
||||||
import org.json.JSONWriter;
|
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.GregorianCalendar;
|
import java.util.GregorianCalendar;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONWriter;
|
||||||
|
|
||||||
import com.metaweb.gridworks.expr.util.CalendarParser;
|
import com.metaweb.gridworks.expr.util.CalendarParser;
|
||||||
import com.metaweb.gridworks.expr.util.CalendarParserException;
|
import com.metaweb.gridworks.expr.util.CalendarParserException;
|
||||||
|
@ -34,7 +34,6 @@ import com.metaweb.gridworks.expr.functions.math.Pow;
|
|||||||
import com.metaweb.gridworks.expr.functions.math.Round;
|
import com.metaweb.gridworks.expr.functions.math.Round;
|
||||||
import com.metaweb.gridworks.expr.functions.math.Sum;
|
import com.metaweb.gridworks.expr.functions.math.Sum;
|
||||||
import com.metaweb.gridworks.expr.functions.strings.Contains;
|
import com.metaweb.gridworks.expr.functions.strings.Contains;
|
||||||
import com.metaweb.gridworks.expr.functions.strings.SplitByLengths;
|
|
||||||
import com.metaweb.gridworks.expr.functions.strings.Diff;
|
import com.metaweb.gridworks.expr.functions.strings.Diff;
|
||||||
import com.metaweb.gridworks.expr.functions.strings.EndsWith;
|
import com.metaweb.gridworks.expr.functions.strings.EndsWith;
|
||||||
import com.metaweb.gridworks.expr.functions.strings.Fingerprint;
|
import com.metaweb.gridworks.expr.functions.strings.Fingerprint;
|
||||||
@ -51,6 +50,7 @@ import com.metaweb.gridworks.expr.functions.strings.ReplaceChars;
|
|||||||
import com.metaweb.gridworks.expr.functions.strings.SHA1;
|
import com.metaweb.gridworks.expr.functions.strings.SHA1;
|
||||||
import com.metaweb.gridworks.expr.functions.strings.Split;
|
import com.metaweb.gridworks.expr.functions.strings.Split;
|
||||||
import com.metaweb.gridworks.expr.functions.strings.SplitByCharType;
|
import com.metaweb.gridworks.expr.functions.strings.SplitByCharType;
|
||||||
|
import com.metaweb.gridworks.expr.functions.strings.SplitByLengths;
|
||||||
import com.metaweb.gridworks.expr.functions.strings.StartsWith;
|
import com.metaweb.gridworks.expr.functions.strings.StartsWith;
|
||||||
import com.metaweb.gridworks.expr.functions.strings.ToLowercase;
|
import com.metaweb.gridworks.expr.functions.strings.ToLowercase;
|
||||||
import com.metaweb.gridworks.expr.functions.strings.ToTitlecase;
|
import com.metaweb.gridworks.expr.functions.strings.ToTitlecase;
|
||||||
|
@ -20,6 +20,9 @@ import java.util.zip.ZipEntry;
|
|||||||
import java.util.zip.ZipInputStream;
|
import java.util.zip.ZipInputStream;
|
||||||
import java.util.zip.ZipOutputStream;
|
import java.util.zip.ZipOutputStream;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.metaweb.gridworks.Gridworks;
|
import com.metaweb.gridworks.Gridworks;
|
||||||
import com.metaweb.gridworks.ProjectManager;
|
import com.metaweb.gridworks.ProjectManager;
|
||||||
import com.metaweb.gridworks.ProjectMetadata;
|
import com.metaweb.gridworks.ProjectMetadata;
|
||||||
@ -40,6 +43,8 @@ public class Project {
|
|||||||
transient public ProcessManager processManager = new ProcessManager();
|
transient public ProcessManager processManager = new ProcessManager();
|
||||||
transient public Date lastSave = new Date();
|
transient public Date lastSave = new Date();
|
||||||
|
|
||||||
|
final static Logger logger = LoggerFactory.getLogger("project");
|
||||||
|
|
||||||
static public long generateID() {
|
static public long generateID() {
|
||||||
return System.currentTimeMillis() + Math.round(Math.random() * 1000000000000L);
|
return System.currentTimeMillis() + Math.round(Math.random() * 1000000000000L);
|
||||||
}
|
}
|
||||||
@ -68,7 +73,7 @@ public class Project {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|
||||||
Gridworks.log("Failed to save project " + id);
|
logger.warn("Failed to save project {}", id);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,7 +91,7 @@ public class Project {
|
|||||||
|
|
||||||
lastSave = new Date();
|
lastSave = new Date();
|
||||||
|
|
||||||
Gridworks.log("Saved project " + id + ".");
|
logger.info("Saved project '{}'",id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -213,10 +218,8 @@ public class Project {
|
|||||||
|
|
||||||
project.columnModel.setMaxCellIndex(maxCellCount - 1);
|
project.columnModel.setMaxCellIndex(maxCellCount - 1);
|
||||||
|
|
||||||
Gridworks.log(
|
logger.info(
|
||||||
"Loaded project " + id + " from disk in " +
|
"Loaded project {} from disk in {} sec(s)",id,Long.toString((System.currentTimeMillis() - start) / 1000)
|
||||||
(System.currentTimeMillis() - start) / 1000 +
|
|
||||||
" sec(s)"
|
|
||||||
);
|
);
|
||||||
|
|
||||||
project.recomputeRowContextDependencies();
|
project.recomputeRowContextDependencies();
|
||||||
|
@ -25,6 +25,7 @@ public class Credentials {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String getCookieName(Provider provider) {
|
public String getCookieName(Provider provider) {
|
||||||
|
if (provider == null) throw new RuntimeException("Provider can't be null");
|
||||||
return provider.getHost() + "_" + postfix;
|
return provider.getHost() + "_" + postfix;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -36,10 +37,8 @@ public class Credentials {
|
|||||||
|
|
||||||
public static void setCredentials(HttpServletResponse response, Credentials credentials, Type type, int max_age) {
|
public static void setCredentials(HttpServletResponse response, Credentials credentials, Type type, int max_age) {
|
||||||
String name = type.getCookieName(credentials.getProvider());
|
String name = type.getCookieName(credentials.getProvider());
|
||||||
Cookie c = new Cookie(name, credentials.toString());
|
String value = credentials.toString();
|
||||||
c.setPath("/");
|
CookiesUtilities.setCookie(response, name, value, max_age);
|
||||||
c.setMaxAge(max_age);
|
|
||||||
response.addCookie(c);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void deleteCredentials(HttpServletRequest request, HttpServletResponse response, Provider provider, Type type) {
|
public static void deleteCredentials(HttpServletRequest request, HttpServletResponse response, Provider provider, Type type) {
|
||||||
@ -60,6 +59,8 @@ public class Credentials {
|
|||||||
if (token == null) throw new RuntimeException("Could not find " + TOKEN + " in auth credentials");
|
if (token == null) throw new RuntimeException("Could not find " + TOKEN + " in auth credentials");
|
||||||
this.secret = secret;
|
this.secret = secret;
|
||||||
if (secret == null) throw new RuntimeException("Could not find " + SECRET + " in auth credentials");
|
if (secret == null) throw new RuntimeException("Could not find " + SECRET + " in auth credentials");
|
||||||
|
this.provider = provider;
|
||||||
|
if (provider == null) throw new RuntimeException("Provider can't be null");
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getToken() {
|
public String getToken() {
|
||||||
|
@ -3,10 +3,15 @@ package com.metaweb.gridworks.oauth;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import oauth.signpost.OAuthConsumer;
|
import oauth.signpost.OAuthConsumer;
|
||||||
import oauth.signpost.OAuthProvider;
|
import oauth.signpost.OAuthProvider;
|
||||||
import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer;
|
import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer;
|
||||||
import oauth.signpost.commonshttp.CommonsHttpOAuthProvider;
|
import oauth.signpost.commonshttp.CommonsHttpOAuthProvider;
|
||||||
|
import oauth.signpost.http.HttpParameters;
|
||||||
|
|
||||||
|
import com.metaweb.gridworks.util.FreebaseUtils;
|
||||||
|
|
||||||
public class OAuthUtilities {
|
public class OAuthUtilities {
|
||||||
|
|
||||||
@ -14,30 +19,43 @@ public class OAuthUtilities {
|
|||||||
static final private Map<String,String[]> infos = new HashMap<String,String[]>();
|
static final private Map<String,String[]> infos = new HashMap<String,String[]>();
|
||||||
|
|
||||||
static private final String[] FREEBASE_OAUTH_INFO = { "#9202a8c04000641f80000000150979b7" , "8ded7babfad2f94f4c77e39bbd6c90f31939999b"};
|
static private final String[] FREEBASE_OAUTH_INFO = { "#9202a8c04000641f80000000150979b7" , "8ded7babfad2f94f4c77e39bbd6c90f31939999b"};
|
||||||
static private final String[] SANDBOX_OAUTH_INFO = { "#9202a8c04000641f800000001505964a" , "a816b13991bf1d191ad1c371f3c230feca6a11e2"};
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
providers.put("freebase", new FreebaseProvider("www.freebase.com"));
|
Provider freebase = new FreebaseProvider(FreebaseUtils.FREEBASE_HOST);
|
||||||
providers.put("sandbox", new FreebaseProvider("www.sandbox-freebase.com"));
|
providers.put(freebase.getHost(), freebase);
|
||||||
|
|
||||||
infos.put("www.freebase.com", FREEBASE_OAUTH_INFO);
|
infos.put(freebase.getHost(), FREEBASE_OAUTH_INFO);
|
||||||
infos.put("www.sandbox-freebase.com", SANDBOX_OAUTH_INFO);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Provider getProvider(String name) {
|
public static Provider getProvider(String name) {
|
||||||
return (name == null) ? null : providers.get(name);
|
return (name == null) ? null : providers.get(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Provider getProvider(HttpServletRequest request) {
|
||||||
|
String path = request.getPathInfo().substring(1);
|
||||||
|
int slash = path.lastIndexOf('/');
|
||||||
|
String provider_str = path.substring(slash + 1);
|
||||||
|
Provider provider = getProvider(provider_str);
|
||||||
|
if (provider == null) throw new RuntimeException("Can't find OAuth provider '" + provider_str + "'");
|
||||||
|
return provider;
|
||||||
|
}
|
||||||
|
|
||||||
public static OAuthConsumer getConsumer(Provider provider) {
|
public static OAuthConsumer getConsumer(Provider provider) {
|
||||||
if (provider == null) throw new RuntimeException("Provider can't be null");
|
if (provider == null) throw new RuntimeException("Provider can't be null");
|
||||||
String[] consumer_info = infos.get(provider.getHost());
|
String[] consumer_info = infos.get(provider.getHost());
|
||||||
if (consumer_info == null) throw new RuntimeException("Can't find secrets for provider '" + provider.getHost() + "'");
|
if (consumer_info == null) throw new RuntimeException("Can't find secrets for provider '" + provider.getHost() + "'");
|
||||||
return new CommonsHttpOAuthConsumer(consumer_info[0],consumer_info[1]);
|
OAuthConsumer oauthConsumer = new CommonsHttpOAuthConsumer(consumer_info[0],consumer_info[1]);
|
||||||
|
HttpParameters params = new HttpParameters();
|
||||||
|
params.put("realm", provider.getHost());
|
||||||
|
oauthConsumer.setAdditionalParameters(params);
|
||||||
|
return oauthConsumer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static OAuthConsumer getConsumer(Credentials credentials, Provider provider) {
|
public static OAuthConsumer getConsumer(Credentials credentials, Provider provider) {
|
||||||
OAuthConsumer consumer = getConsumer(provider);
|
OAuthConsumer consumer = getConsumer(provider);
|
||||||
|
if (credentials != null) {
|
||||||
consumer.setTokenWithSecret(credentials.getToken(), credentials.getSecret());
|
consumer.setTokenWithSecret(credentials.getToken(), credentials.getSecret());
|
||||||
|
}
|
||||||
return consumer;
|
return consumer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,9 @@ import javax.servlet.http.HttpServletResponse;
|
|||||||
|
|
||||||
public class CookiesUtilities {
|
public class CookiesUtilities {
|
||||||
|
|
||||||
|
public static final String DOMAIN = "127.0.0.1";
|
||||||
|
public static final String PATH = "/";
|
||||||
|
|
||||||
public static Cookie getCookie(HttpServletRequest request, String name) {
|
public static Cookie getCookie(HttpServletRequest request, String name) {
|
||||||
if (name == null) throw new RuntimeException("cookie name cannot be null");
|
if (name == null) throw new RuntimeException("cookie name cannot be null");
|
||||||
Cookie cookie = null;
|
Cookie cookie = null;
|
||||||
@ -20,15 +23,20 @@ public class CookiesUtilities {
|
|||||||
return cookie;
|
return cookie;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void deleteCookie(HttpServletRequest request, HttpServletResponse response, String name) {
|
public static void setCookie(HttpServletResponse response, String name, String value, int max_age) {
|
||||||
Cookie cookie = getCookie(request, name);
|
Cookie c = new Cookie(name, value);
|
||||||
if (cookie != null) {
|
c.setDomain(DOMAIN);
|
||||||
Cookie delCookie = new Cookie(cookie.getName(), cookie.getValue());
|
c.setPath(PATH);
|
||||||
delCookie.setDomain(cookie.getDomain());
|
c.setMaxAge(max_age);
|
||||||
delCookie.setPath(cookie.getPath());
|
response.addCookie(c);
|
||||||
delCookie.setMaxAge(0);
|
|
||||||
response.addCookie(delCookie);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void deleteCookie(HttpServletRequest request, HttpServletResponse response, String name) {
|
||||||
|
Cookie c = new Cookie(name, "");
|
||||||
|
c.setDomain(DOMAIN);
|
||||||
|
c.setPath(PATH);
|
||||||
|
c.setMaxAge(0);
|
||||||
|
response.addCookie(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
115
src/main/java/com/metaweb/gridworks/util/FreebaseUtils.java
Normal file
115
src/main/java/com/metaweb/gridworks/util/FreebaseUtils.java
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
package com.metaweb.gridworks.util;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import oauth.signpost.OAuthConsumer;
|
||||||
|
import oauth.signpost.exception.OAuthCommunicationException;
|
||||||
|
import oauth.signpost.exception.OAuthExpectationFailedException;
|
||||||
|
import oauth.signpost.exception.OAuthMessageSignerException;
|
||||||
|
|
||||||
|
import org.apache.http.Header;
|
||||||
|
import org.apache.http.HttpResponse;
|
||||||
|
import org.apache.http.NameValuePair;
|
||||||
|
import org.apache.http.client.ClientProtocolException;
|
||||||
|
import org.apache.http.client.HttpClient;
|
||||||
|
import org.apache.http.client.entity.UrlEncodedFormEntity;
|
||||||
|
import org.apache.http.client.methods.HttpGet;
|
||||||
|
import org.apache.http.client.methods.HttpPost;
|
||||||
|
import org.apache.http.impl.client.DefaultHttpClient;
|
||||||
|
import org.apache.http.message.BasicNameValuePair;
|
||||||
|
import org.apache.http.params.CoreProtocolPNames;
|
||||||
|
import org.apache.http.util.EntityUtils;
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import com.metaweb.gridworks.Gridworks;
|
||||||
|
import com.metaweb.gridworks.oauth.Credentials;
|
||||||
|
import com.metaweb.gridworks.oauth.OAuthUtilities;
|
||||||
|
import com.metaweb.gridworks.oauth.Provider;
|
||||||
|
|
||||||
|
public class FreebaseUtils {
|
||||||
|
|
||||||
|
static final public String FREEBASE_HOST = "www.freebase.com";
|
||||||
|
static final public String FREEBASE_SANDBOX_HOST = "www.sandbox-freebase.com";
|
||||||
|
|
||||||
|
static final private String FREEQ_URL = "http://data.labs.freebase.com/freeq/prod/";
|
||||||
|
|
||||||
|
private static String getUserInfoURL(String host) {
|
||||||
|
return "http://" + host + "/api/service/user_info";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getUserInfo(Credentials credentials, Provider provider)
|
||||||
|
throws OAuthMessageSignerException, OAuthExpectationFailedException, OAuthCommunicationException, ClientProtocolException, IOException {
|
||||||
|
|
||||||
|
OAuthConsumer consumer = OAuthUtilities.getConsumer(credentials, provider);
|
||||||
|
|
||||||
|
HttpGet httpRequest = new HttpGet(getUserInfoURL(provider.getHost()));
|
||||||
|
httpRequest.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "Gridworks " + Gridworks.getVersion());
|
||||||
|
|
||||||
|
// this is required by the Metaweb API to avoid XSS
|
||||||
|
httpRequest.setHeader("X-Requested-With", "1");
|
||||||
|
|
||||||
|
// sign the request with the oauth library
|
||||||
|
consumer.sign(httpRequest);
|
||||||
|
|
||||||
|
// execute the request
|
||||||
|
HttpClient httpClient = new DefaultHttpClient();
|
||||||
|
HttpResponse httpResponse = httpClient.execute(httpRequest);
|
||||||
|
|
||||||
|
// return the results
|
||||||
|
return EntityUtils.toString(httpResponse.getEntity());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String uploadTriples(HttpServletRequest request, String info, String triples)
|
||||||
|
throws OAuthMessageSignerException, OAuthExpectationFailedException, OAuthCommunicationException, ClientProtocolException, JSONException, IOException {
|
||||||
|
|
||||||
|
Provider provider = OAuthUtilities.getProvider(FREEBASE_HOST);
|
||||||
|
|
||||||
|
Credentials credentials = Credentials.getCredentials(request, provider, Credentials.Type.ACCESS);
|
||||||
|
|
||||||
|
JSONObject user_info = new JSONObject(getUserInfo(credentials, provider));
|
||||||
|
if (user_info.has("username")) {
|
||||||
|
|
||||||
|
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
|
||||||
|
formparams.add(new BasicNameValuePair("user", user_info.getString("username")));
|
||||||
|
formparams.add(new BasicNameValuePair("action_type", "LOAD_TRIPLE"));
|
||||||
|
formparams.add(new BasicNameValuePair("operator", "gridworks"));
|
||||||
|
formparams.add(new BasicNameValuePair("mdo_info", info));
|
||||||
|
formparams.add(new BasicNameValuePair("graphport", provider.getHost().equals(FREEBASE_HOST) ? "otg" : "sandbox"));
|
||||||
|
formparams.add(new BasicNameValuePair("payload", triples));
|
||||||
|
formparams.add(new BasicNameValuePair("check_params", "false"));
|
||||||
|
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, "UTF-8");
|
||||||
|
|
||||||
|
HttpPost httpRequest = new HttpPost(FREEQ_URL);
|
||||||
|
httpRequest.setEntity(entity);
|
||||||
|
|
||||||
|
HttpPost surrogateRequest = new HttpPost(getUserInfoURL(FREEBASE_HOST));
|
||||||
|
surrogateRequest.setEntity(entity);
|
||||||
|
|
||||||
|
OAuthConsumer consumer = OAuthUtilities.getConsumer(credentials, provider);
|
||||||
|
|
||||||
|
consumer.sign(surrogateRequest);
|
||||||
|
|
||||||
|
Header[] h = surrogateRequest.getHeaders("Authorization");
|
||||||
|
if (h.length > 0) {
|
||||||
|
httpRequest.setHeader("X-Freebase-Credentials", h[0].getValue());
|
||||||
|
} else {
|
||||||
|
throw new RuntimeException("Couldn't find the oauth signature header in the surrogate request");
|
||||||
|
}
|
||||||
|
|
||||||
|
// execute the request
|
||||||
|
HttpClient httpClient = new DefaultHttpClient();
|
||||||
|
HttpResponse httpResponse = httpClient.execute(httpRequest);
|
||||||
|
|
||||||
|
// return the results
|
||||||
|
return EntityUtils.toString(httpResponse.getEntity());
|
||||||
|
} else {
|
||||||
|
throw new RuntimeException("Invalid credentials");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
BIN
src/main/webapp/WEB-INF/lib/slf4j-api-1.5.6.jar
Normal file
BIN
src/main/webapp/WEB-INF/lib/slf4j-api-1.5.6.jar
Normal file
Binary file not shown.
BIN
src/main/webapp/WEB-INF/lib/slf4j-log4j12-1.5.6.jar
Normal file
BIN
src/main/webapp/WEB-INF/lib/slf4j-log4j12-1.5.6.jar
Normal file
Binary file not shown.
@ -1,8 +0,0 @@
|
|||||||
log4j.rootLogger=INFO, console
|
|
||||||
log4j.logger.org.mortbay.jetty=ERROR
|
|
||||||
|
|
||||||
log4j.appender.console=org.apache.log4j.ConsoleAppender
|
|
||||||
log4j.appender.console.layout=org.apache.log4j.PatternLayout
|
|
||||||
#log4j.appender.console.layout.ConversionPattern=[%p] %m%n
|
|
||||||
#log4j.appender.console.layout.ConversionPattern=%d [%t] %-5p %c(%L) - %m%n
|
|
||||||
log4j.appender.console.layout.ConversionPattern=[%p] %c(%L) - %m%n
|
|
478
src/main/webapp/externals/blockui/jquery.blockui.js
vendored
478
src/main/webapp/externals/blockui/jquery.blockui.js
vendored
@ -1,478 +0,0 @@
|
|||||||
/*!
|
|
||||||
* jQuery blockUI plugin
|
|
||||||
* Version 2.31 (06-JAN-2010)
|
|
||||||
* @requires jQuery v1.2.3 or later
|
|
||||||
*
|
|
||||||
* Examples at: http://malsup.com/jquery/block/
|
|
||||||
* Copyright (c) 2007-2008 M. Alsup
|
|
||||||
* Dual licensed under the MIT and GPL licenses:
|
|
||||||
* http://www.opensource.org/licenses/mit-license.php
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* Thanks to Amir-Hossein Sobhi for some excellent contributions!
|
|
||||||
*/
|
|
||||||
|
|
||||||
;(function($) {
|
|
||||||
|
|
||||||
if (/1\.(0|1|2)\.(0|1|2)/.test($.fn.jquery) || /^1.1/.test($.fn.jquery)) {
|
|
||||||
alert('blockUI requires jQuery v1.2.3 or later! You are using v' + $.fn.jquery);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$.fn._fadeIn = $.fn.fadeIn;
|
|
||||||
|
|
||||||
var noOp = function() {};
|
|
||||||
|
|
||||||
// this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle
|
|
||||||
// retarded userAgent strings on Vista)
|
|
||||||
var mode = document.documentMode || 0;
|
|
||||||
var setExpr = $.browser.msie && (($.browser.version < 8 && !mode) || mode < 8);
|
|
||||||
var ie6 = $.browser.msie && /MSIE 6.0/.test(navigator.userAgent) && !mode;
|
|
||||||
|
|
||||||
// global $ methods for blocking/unblocking the entire page
|
|
||||||
$.blockUI = function(opts) { install(window, opts); };
|
|
||||||
$.unblockUI = function(opts) { remove(window, opts); };
|
|
||||||
|
|
||||||
// convenience method for quick growl-like notifications (http://www.google.com/search?q=growl)
|
|
||||||
$.growlUI = function(title, message, timeout, onClose) {
|
|
||||||
var $m = $('<div class="growlUI"></div>');
|
|
||||||
if (title) $m.append('<h1>'+title+'</h1>');
|
|
||||||
if (message) $m.append('<h2>'+message+'</h2>');
|
|
||||||
if (timeout == undefined) timeout = 3000;
|
|
||||||
$.blockUI({
|
|
||||||
message: $m, fadeIn: 700, fadeOut: 1000, centerY: false,
|
|
||||||
timeout: timeout, showOverlay: false,
|
|
||||||
onUnblock: onClose,
|
|
||||||
css: $.blockUI.defaults.growlCSS
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
// plugin method for blocking element content
|
|
||||||
$.fn.block = function(opts) {
|
|
||||||
return this.unblock({ fadeOut: 0 }).each(function() {
|
|
||||||
if ($.css(this,'position') == 'static')
|
|
||||||
this.style.position = 'relative';
|
|
||||||
if ($.browser.msie)
|
|
||||||
this.style.zoom = 1; // force 'hasLayout'
|
|
||||||
install(this, opts);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
// plugin method for unblocking element content
|
|
||||||
$.fn.unblock = function(opts) {
|
|
||||||
return this.each(function() {
|
|
||||||
remove(this, opts);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
$.blockUI.version = 2.31; // 2nd generation blocking at no extra cost!
|
|
||||||
|
|
||||||
// override these in your code to change the default behavior and style
|
|
||||||
$.blockUI.defaults = {
|
|
||||||
// message displayed when blocking (use null for no message)
|
|
||||||
message: '<h1>Please wait...</h1>',
|
|
||||||
|
|
||||||
title: null, // title string; only used when theme == true
|
|
||||||
draggable: true, // only used when theme == true (requires jquery-ui.js to be loaded)
|
|
||||||
|
|
||||||
theme: false, // set to true to use with jQuery UI themes
|
|
||||||
|
|
||||||
// styles for the message when blocking; if you wish to disable
|
|
||||||
// these and use an external stylesheet then do this in your code:
|
|
||||||
// $.blockUI.defaults.css = {};
|
|
||||||
css: {
|
|
||||||
padding: 0,
|
|
||||||
margin: 0,
|
|
||||||
width: '30%',
|
|
||||||
top: '40%',
|
|
||||||
left: '35%',
|
|
||||||
textAlign: 'center',
|
|
||||||
color: '#000',
|
|
||||||
border: '3px solid #aaa',
|
|
||||||
backgroundColor:'#fff',
|
|
||||||
cursor: 'wait'
|
|
||||||
},
|
|
||||||
|
|
||||||
// minimal style set used when themes are used
|
|
||||||
themedCSS: {
|
|
||||||
width: '30%',
|
|
||||||
top: '40%',
|
|
||||||
left: '35%'
|
|
||||||
},
|
|
||||||
|
|
||||||
// styles for the overlay
|
|
||||||
overlayCSS: {
|
|
||||||
backgroundColor: '#000',
|
|
||||||
opacity: 0.6,
|
|
||||||
cursor: 'wait'
|
|
||||||
},
|
|
||||||
|
|
||||||
// styles applied when using $.growlUI
|
|
||||||
growlCSS: {
|
|
||||||
width: '350px',
|
|
||||||
top: '10px',
|
|
||||||
left: '',
|
|
||||||
right: '10px',
|
|
||||||
border: 'none',
|
|
||||||
padding: '5px',
|
|
||||||
opacity: 0.6,
|
|
||||||
cursor: 'default',
|
|
||||||
color: '#fff',
|
|
||||||
backgroundColor: '#000',
|
|
||||||
'-webkit-border-radius': '10px',
|
|
||||||
'-moz-border-radius': '10px'
|
|
||||||
},
|
|
||||||
|
|
||||||
// IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w
|
|
||||||
// (hat tip to Jorge H. N. de Vasconcelos)
|
|
||||||
iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',
|
|
||||||
|
|
||||||
// force usage of iframe in non-IE browsers (handy for blocking applets)
|
|
||||||
forceIframe: false,
|
|
||||||
|
|
||||||
// z-index for the blocking overlay
|
|
||||||
baseZ: 1000,
|
|
||||||
|
|
||||||
// set these to true to have the message automatically centered
|
|
||||||
centerX: true, // <-- only effects element blocking (page block controlled via css above)
|
|
||||||
centerY: true,
|
|
||||||
|
|
||||||
// allow body element to be stetched in ie6; this makes blocking look better
|
|
||||||
// on "short" pages. disable if you wish to prevent changes to the body height
|
|
||||||
allowBodyStretch: true,
|
|
||||||
|
|
||||||
// enable if you want key and mouse events to be disabled for content that is blocked
|
|
||||||
bindEvents: true,
|
|
||||||
|
|
||||||
// be default blockUI will supress tab navigation from leaving blocking content
|
|
||||||
// (if bindEvents is true)
|
|
||||||
constrainTabKey: true,
|
|
||||||
|
|
||||||
// fadeIn time in millis; set to 0 to disable fadeIn on block
|
|
||||||
fadeIn: 200,
|
|
||||||
|
|
||||||
// fadeOut time in millis; set to 0 to disable fadeOut on unblock
|
|
||||||
fadeOut: 400,
|
|
||||||
|
|
||||||
// time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock
|
|
||||||
timeout: 0,
|
|
||||||
|
|
||||||
// disable if you don't want to show the overlay
|
|
||||||
showOverlay: true,
|
|
||||||
|
|
||||||
// if true, focus will be placed in the first available input field when
|
|
||||||
// page blocking
|
|
||||||
focusInput: true,
|
|
||||||
|
|
||||||
// suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)
|
|
||||||
applyPlatformOpacityRules: true,
|
|
||||||
|
|
||||||
// callback method invoked when fadeIn has completed and blocking message is visible
|
|
||||||
onBlock: null,
|
|
||||||
|
|
||||||
// callback method invoked when unblocking has completed; the callback is
|
|
||||||
// passed the element that has been unblocked (which is the window object for page
|
|
||||||
// blocks) and the options that were passed to the unblock call:
|
|
||||||
// onUnblock(element, options)
|
|
||||||
onUnblock: null,
|
|
||||||
|
|
||||||
// don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493
|
|
||||||
quirksmodeOffsetHack: 4
|
|
||||||
};
|
|
||||||
|
|
||||||
// private data and functions follow...
|
|
||||||
|
|
||||||
var pageBlock = null;
|
|
||||||
var pageBlockEls = [];
|
|
||||||
|
|
||||||
function install(el, opts) {
|
|
||||||
var full = (el == window);
|
|
||||||
var msg = opts && opts.message !== undefined ? opts.message : undefined;
|
|
||||||
opts = $.extend({}, $.blockUI.defaults, opts || {});
|
|
||||||
opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});
|
|
||||||
var css = $.extend({}, $.blockUI.defaults.css, opts.css || {});
|
|
||||||
var themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});
|
|
||||||
msg = msg === undefined ? opts.message : msg;
|
|
||||||
|
|
||||||
// remove the current block (if there is one)
|
|
||||||
if (full && pageBlock)
|
|
||||||
remove(window, {fadeOut:0});
|
|
||||||
|
|
||||||
// if an existing element is being used as the blocking content then we capture
|
|
||||||
// its current place in the DOM (and current display style) so we can restore
|
|
||||||
// it when we unblock
|
|
||||||
if (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) {
|
|
||||||
var node = msg.jquery ? msg[0] : msg;
|
|
||||||
var data = {};
|
|
||||||
$(el).data('blockUI.history', data);
|
|
||||||
data.el = node;
|
|
||||||
data.parent = node.parentNode;
|
|
||||||
data.display = node.style.display;
|
|
||||||
data.position = node.style.position;
|
|
||||||
if (data.parent)
|
|
||||||
data.parent.removeChild(node);
|
|
||||||
}
|
|
||||||
|
|
||||||
var z = opts.baseZ;
|
|
||||||
|
|
||||||
// blockUI uses 3 layers for blocking, for simplicity they are all used on every platform;
|
|
||||||
// layer1 is the iframe layer which is used to supress bleed through of underlying content
|
|
||||||
// layer2 is the overlay layer which has opacity and a wait cursor (by default)
|
|
||||||
// layer3 is the message content that is displayed while blocking
|
|
||||||
|
|
||||||
var lyr1 = ($.browser.msie || opts.forceIframe)
|
|
||||||
? $('<iframe class="blockUI" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+opts.iframeSrc+'"></iframe>')
|
|
||||||
: $('<div class="blockUI" style="display:none"></div>');
|
|
||||||
var lyr2 = $('<div class="blockUI blockOverlay" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');
|
|
||||||
|
|
||||||
var lyr3;
|
|
||||||
if (opts.theme && full) {
|
|
||||||
var s = '<div class="blockUI blockMsg blockPage ui-dialog ui-widget ui-corner-all" style="z-index:'+z+';display:none;position:fixed">' +
|
|
||||||
'<div class="ui-widget-header ui-dialog-titlebar blockTitle">'+(opts.title || ' ')+'</div>' +
|
|
||||||
'<div class="ui-widget-content ui-dialog-content"></div>' +
|
|
||||||
'</div>';
|
|
||||||
lyr3 = $(s);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
lyr3 = full ? $('<div class="blockUI blockMsg blockPage" style="z-index:'+z+';display:none;position:fixed"></div>')
|
|
||||||
: $('<div class="blockUI blockMsg blockElement" style="z-index:'+z+';display:none;position:absolute"></div>');
|
|
||||||
}
|
|
||||||
|
|
||||||
// if we have a message, style it
|
|
||||||
if (msg) {
|
|
||||||
if (opts.theme) {
|
|
||||||
lyr3.css(themedCSS);
|
|
||||||
lyr3.addClass('ui-widget-content');
|
|
||||||
}
|
|
||||||
else
|
|
||||||
lyr3.css(css);
|
|
||||||
}
|
|
||||||
|
|
||||||
// style the overlay
|
|
||||||
if (!opts.applyPlatformOpacityRules || !($.browser.mozilla && /Linux/.test(navigator.platform)))
|
|
||||||
lyr2.css(opts.overlayCSS);
|
|
||||||
lyr2.css('position', full ? 'fixed' : 'absolute');
|
|
||||||
|
|
||||||
// make iframe layer transparent in IE
|
|
||||||
if ($.browser.msie || opts.forceIframe)
|
|
||||||
lyr1.css('opacity',0.0);
|
|
||||||
|
|
||||||
//$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);
|
|
||||||
var layers = [lyr1,lyr2,lyr3], $par = full ? $('body') : $(el);
|
|
||||||
$.each(layers, function() {
|
|
||||||
this.appendTo($par);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (opts.theme && opts.draggable && $.fn.draggable) {
|
|
||||||
lyr3.draggable({
|
|
||||||
handle: '.ui-dialog-titlebar',
|
|
||||||
cancel: 'li'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)
|
|
||||||
var expr = setExpr && (!$.boxModel || $('object,embed', full ? null : el).length > 0);
|
|
||||||
if (ie6 || expr) {
|
|
||||||
// give body 100% height
|
|
||||||
if (full && opts.allowBodyStretch && $.boxModel)
|
|
||||||
$('html,body').css('height','100%');
|
|
||||||
|
|
||||||
// fix ie6 issue when blocked element has a border width
|
|
||||||
if ((ie6 || !$.boxModel) && !full) {
|
|
||||||
var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');
|
|
||||||
var fixT = t ? '(0 - '+t+')' : 0;
|
|
||||||
var fixL = l ? '(0 - '+l+')' : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// simulate fixed position
|
|
||||||
$.each([lyr1,lyr2,lyr3], function(i,o) {
|
|
||||||
var s = o[0].style;
|
|
||||||
s.position = 'absolute';
|
|
||||||
if (i < 2) {
|
|
||||||
full ? s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"')
|
|
||||||
: s.setExpression('height','this.parentNode.offsetHeight + "px"');
|
|
||||||
full ? s.setExpression('width','jQuery.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"')
|
|
||||||
: s.setExpression('width','this.parentNode.offsetWidth + "px"');
|
|
||||||
if (fixL) s.setExpression('left', fixL);
|
|
||||||
if (fixT) s.setExpression('top', fixT);
|
|
||||||
}
|
|
||||||
else if (opts.centerY) {
|
|
||||||
if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"');
|
|
||||||
s.marginTop = 0;
|
|
||||||
}
|
|
||||||
else if (!opts.centerY && full) {
|
|
||||||
var top = (opts.css && opts.css.top) ? parseInt(opts.css.top) : 0;
|
|
||||||
var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"';
|
|
||||||
s.setExpression('top',expression);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// show the message
|
|
||||||
if (msg) {
|
|
||||||
if (opts.theme)
|
|
||||||
lyr3.find('.ui-widget-content').append(msg);
|
|
||||||
else
|
|
||||||
lyr3.append(msg);
|
|
||||||
if (msg.jquery || msg.nodeType)
|
|
||||||
$(msg).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (($.browser.msie || opts.forceIframe) && opts.showOverlay)
|
|
||||||
lyr1.show(); // opacity is zero
|
|
||||||
if (opts.fadeIn) {
|
|
||||||
var cb = opts.onBlock ? opts.onBlock : noOp;
|
|
||||||
var cb1 = (opts.showOverlay && !msg) ? cb : noOp;
|
|
||||||
var cb2 = msg ? cb : noOp;
|
|
||||||
if (opts.showOverlay)
|
|
||||||
lyr2._fadeIn(opts.fadeIn, cb1);
|
|
||||||
if (msg)
|
|
||||||
lyr3._fadeIn(opts.fadeIn, cb2);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (opts.showOverlay)
|
|
||||||
lyr2.show();
|
|
||||||
if (msg)
|
|
||||||
lyr3.show();
|
|
||||||
if (opts.onBlock)
|
|
||||||
opts.onBlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
// bind key and mouse events
|
|
||||||
bind(1, el, opts);
|
|
||||||
|
|
||||||
if (full) {
|
|
||||||
pageBlock = lyr3[0];
|
|
||||||
pageBlockEls = $(':input:enabled:visible',pageBlock);
|
|
||||||
if (opts.focusInput)
|
|
||||||
setTimeout(focus, 20);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
center(lyr3[0], opts.centerX, opts.centerY);
|
|
||||||
|
|
||||||
if (opts.timeout) {
|
|
||||||
// auto-unblock
|
|
||||||
var to = setTimeout(function() {
|
|
||||||
full ? $.unblockUI(opts) : $(el).unblock(opts);
|
|
||||||
}, opts.timeout);
|
|
||||||
$(el).data('blockUI.timeout', to);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// remove the block
|
|
||||||
function remove(el, opts) {
|
|
||||||
var full = (el == window);
|
|
||||||
var $el = $(el);
|
|
||||||
var data = $el.data('blockUI.history');
|
|
||||||
var to = $el.data('blockUI.timeout');
|
|
||||||
if (to) {
|
|
||||||
clearTimeout(to);
|
|
||||||
$el.removeData('blockUI.timeout');
|
|
||||||
}
|
|
||||||
opts = $.extend({}, $.blockUI.defaults, opts || {});
|
|
||||||
bind(0, el, opts); // unbind events
|
|
||||||
|
|
||||||
var els;
|
|
||||||
if (full) // crazy selector to handle odd field errors in ie6/7
|
|
||||||
els = $('body').children().filter('.blockUI').add('body > .blockUI');
|
|
||||||
else
|
|
||||||
els = $('.blockUI', el);
|
|
||||||
|
|
||||||
if (full)
|
|
||||||
pageBlock = pageBlockEls = null;
|
|
||||||
|
|
||||||
if (opts.fadeOut) {
|
|
||||||
els.fadeOut(opts.fadeOut);
|
|
||||||
setTimeout(function() { reset(els,data,opts,el); }, opts.fadeOut);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
reset(els, data, opts, el);
|
|
||||||
};
|
|
||||||
|
|
||||||
// move blocking element back into the DOM where it started
|
|
||||||
function reset(els,data,opts,el) {
|
|
||||||
els.each(function(i,o) {
|
|
||||||
// remove via DOM calls so we don't lose event handlers
|
|
||||||
if (this.parentNode)
|
|
||||||
this.parentNode.removeChild(this);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (data && data.el) {
|
|
||||||
data.el.style.display = data.display;
|
|
||||||
data.el.style.position = data.position;
|
|
||||||
if (data.parent)
|
|
||||||
data.parent.appendChild(data.el);
|
|
||||||
$(el).removeData('blockUI.history');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof opts.onUnblock == 'function')
|
|
||||||
opts.onUnblock(el,opts);
|
|
||||||
};
|
|
||||||
|
|
||||||
// bind/unbind the handler
|
|
||||||
function bind(b, el, opts) {
|
|
||||||
var full = el == window, $el = $(el);
|
|
||||||
|
|
||||||
// don't bother unbinding if there is nothing to unbind
|
|
||||||
if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked')))
|
|
||||||
return;
|
|
||||||
if (!full)
|
|
||||||
$el.data('blockUI.isBlocked', b);
|
|
||||||
|
|
||||||
// don't bind events when overlay is not in use or if bindEvents is false
|
|
||||||
if (!opts.bindEvents || (b && !opts.showOverlay))
|
|
||||||
return;
|
|
||||||
|
|
||||||
// bind anchors and inputs for mouse and key events
|
|
||||||
var events = 'mousedown mouseup keydown keypress';
|
|
||||||
b ? $(document).bind(events, opts, handler) : $(document).unbind(events, handler);
|
|
||||||
|
|
||||||
// former impl...
|
|
||||||
// var $e = $('a,:input');
|
|
||||||
// b ? $e.bind(events, opts, handler) : $e.unbind(events, handler);
|
|
||||||
};
|
|
||||||
|
|
||||||
// event handler to suppress keyboard/mouse events when blocking
|
|
||||||
function handler(e) {
|
|
||||||
// allow tab navigation (conditionally)
|
|
||||||
if (e.keyCode && e.keyCode == 9) {
|
|
||||||
if (pageBlock && e.data.constrainTabKey) {
|
|
||||||
var els = pageBlockEls;
|
|
||||||
var fwd = !e.shiftKey && e.target == els[els.length-1];
|
|
||||||
var back = e.shiftKey && e.target == els[0];
|
|
||||||
if (fwd || back) {
|
|
||||||
setTimeout(function(){focus(back)},10);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// allow events within the message content
|
|
||||||
if ($(e.target).parents('div.blockMsg').length > 0)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
// allow events for content that is not being blocked
|
|
||||||
return $(e.target).parents().children().filter('div.blockUI').length == 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
function focus(back) {
|
|
||||||
if (!pageBlockEls)
|
|
||||||
return;
|
|
||||||
var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0];
|
|
||||||
if (e)
|
|
||||||
e.focus();
|
|
||||||
};
|
|
||||||
|
|
||||||
function center(el, x, y) {
|
|
||||||
var p = el.parentNode, s = el.style;
|
|
||||||
var l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth');
|
|
||||||
var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth');
|
|
||||||
if (x) s.left = l > 0 ? (l+'px') : '0';
|
|
||||||
if (y) s.top = t > 0 ? (t+'px') : '0';
|
|
||||||
};
|
|
||||||
|
|
||||||
function sz(el, p) {
|
|
||||||
return parseInt($.css(el,p))||0;
|
|
||||||
};
|
|
||||||
|
|
||||||
})(jQuery);
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
@ -5,76 +5,118 @@ function FreebaseLoadingDialog() {
|
|||||||
FreebaseLoadingDialog.prototype._createDialog = function() {
|
FreebaseLoadingDialog.prototype._createDialog = function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
var frame = DialogSystem.createDialog();
|
var frame = DialogSystem.createDialog();
|
||||||
frame.width("900px");
|
frame.width("800px");
|
||||||
|
|
||||||
var header = $('<div></div>').addClass("dialog-header").text('Load Data into Freebase').appendTo(frame);
|
var header = $('<div></div>').addClass("dialog-header").text('Load Data into Freebase').appendTo(frame);
|
||||||
var body = $('<div></div>').addClass("dialog-body").appendTo(frame);
|
var body = $('<div></div>').addClass("dialog-body").appendTo(frame);
|
||||||
var footer = $(
|
var footer = $(
|
||||||
'<div class="dialog-footer">' +
|
'<div class="dialog-footer">' +
|
||||||
'<table width="100%"><tr>' +
|
'<table width="100%"><tr>' +
|
||||||
'<td class="left" style="text-align: left"></td>' +
|
'<td class="left" style="text-align: left" width="40%" nowrap="true"></td>' +
|
||||||
'<td class="right" style="text-align: right"></td>' +
|
'<td class="center" style="text-align: center" width="20%" nowrap="true"></td>' +
|
||||||
|
'<td class="right" style="text-align: right" width="40%" nowrap="true"></td>' +
|
||||||
'</tr></table>' +
|
'</tr></table>' +
|
||||||
'</div>'
|
'</div>'
|
||||||
).appendTo(frame);
|
).appendTo(frame);
|
||||||
|
|
||||||
$.post(
|
$.post(
|
||||||
"/command/export-rows?" + $.param({
|
"/command/export-rows",
|
||||||
|
{
|
||||||
project: theProject.id,
|
project: theProject.id,
|
||||||
format : "tripleloader"
|
format : "tripleloader"
|
||||||
}),
|
},
|
||||||
{},
|
|
||||||
function(data) {
|
function(data) {
|
||||||
frame.find(".dialog-body").html('<div class="freebase-loading-tripleloader-data">' + data + '</pre>');
|
console.log(data);
|
||||||
|
body.html(
|
||||||
|
'<div class="freebase-loading-tripleloader-data">' + data + '</div>' +
|
||||||
|
'<div class="freebase-loading-tripleloader-info">' +
|
||||||
|
'<div>Describe the data you\'re about to load ¬</div>' +
|
||||||
|
'<textarea></textarea>' +
|
||||||
|
'</div>'
|
||||||
|
);
|
||||||
self._level = DialogSystem.showDialog(frame);
|
self._level = DialogSystem.showDialog(frame);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
var left_footer = footer.find(".left");
|
var left_footer = footer.find(".left");
|
||||||
$('<button></button>').text("Cancel").click(function() {
|
|
||||||
|
var cancel_button = $('<button id="freebase-loading-cancel"></button>').text("Cancel").click(function() {
|
||||||
self._dismiss();
|
self._dismiss();
|
||||||
}).appendTo(left_footer);
|
}).appendTo(left_footer);
|
||||||
|
|
||||||
|
var center_footer = footer.find(".center");
|
||||||
|
|
||||||
|
var authorization = $('<div>').addClass("freebase-loading-authorization").hide().appendTo(center_footer);
|
||||||
|
|
||||||
var right_footer = footer.find(".right");
|
var right_footer = footer.find(".right");
|
||||||
|
|
||||||
//$('<div class="freebase-loading-authorization signedin" style="display: none">Signed in as: <span class="user"></span></div>').appendTo(right_footer);
|
var selector = $('<span>').addClass("freebase-loading-graph-selector").html("Load this data into " +
|
||||||
|
|
||||||
var selector = $('<span>').addClass("freebase-loading-graph-selector").html("Load into " +
|
|
||||||
'<input type="radio" bind="sandbox" id="freebase-loading-graph-selector-sandbox" name="graph-selector" checked="checked" value="sandbox"/><label class="sandbox" for="freebase-loading-graph-selector-sandbox" title="Load into the sandbox">sandbox</label>' +
|
'<input type="radio" bind="sandbox" id="freebase-loading-graph-selector-sandbox" name="graph-selector" checked="checked" value="sandbox"/><label class="sandbox" for="freebase-loading-graph-selector-sandbox" title="Load into the sandbox">sandbox</label>' +
|
||||||
'<input type="radio" bind="otg" id="freebase-loading-graph-selector-otg" name="graph-selector" value="otg"/><label class="otg" for="freebase-loading-graph-selector-otg" title="Load into Freebase">freebase</label>'
|
'<input type="radio" bind="freebase" id="freebase-loading-graph-selector-freebase" name="graph-selector" value="freebase"/><label class="freebase" for="freebase-loading-graph-selector-freebase" title="Load into Freebase">freebase</label>'
|
||||||
).buttonset().appendTo(right_footer);
|
).buttonset().appendTo(right_footer);
|
||||||
|
|
||||||
$('<button></button>').text("Load").click(function() {
|
var load_button = $('<button id="freebase-loading-load"></button>').text("Sign In").appendTo(right_footer);
|
||||||
self._check_authorization(self._load);
|
|
||||||
}).appendTo(right_footer);
|
|
||||||
|
|
||||||
this._elmts = DOM.bind(frame);
|
this._elmts = DOM.bind(frame);
|
||||||
|
|
||||||
this._elmts.otg.click(function() {
|
var provider = "www.freebase.com";
|
||||||
if (!confirm("are you sure?")) {
|
|
||||||
self._elmts.sandbox.attr("checked","checked");
|
|
||||||
self._elmts.otg.removeAttr("checked");
|
|
||||||
selector.find("input").button('refresh');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
};
|
var check_authorization = function() {
|
||||||
|
$.get("/command/check-authorization/" + provider, function(data) {
|
||||||
FreebaseLoadingDialog.prototype._check_authorization = function(cont) {
|
|
||||||
var freebase = this._elmts.otg.attr("checked");
|
|
||||||
var provider = (freebase) ? "freebase" : "sandbox";
|
|
||||||
$.get("/command/check-authorization",{ "provider" : provider }, function(data) {
|
|
||||||
if ("status" in data && data.status == "200 OK") {
|
if ("status" in data && data.status == "200 OK") {
|
||||||
if (typeof cont == "function") cont();
|
authorization.html('Signed in as: <a target="_new" href="http://www.freebase.com/view/user/' + data.username + '">' + data.username + '</a> | <a href="javascript:{}" bind="signout">Sign Out</a>').show();
|
||||||
|
DOM.bind(authorization).signout.click(function() {
|
||||||
|
Sign.signout(check_authorization,provider);
|
||||||
|
});
|
||||||
|
load_button.text("Load").unbind().click(function() {
|
||||||
|
self._load(self);
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
alert("Sorry, we're working very hard to make this happen.");
|
authorization.html("").hide();
|
||||||
//Sign.signin(cont,provider);
|
load_button.text("Sign In").removeAttr("disabled").unbind().click(function() {
|
||||||
|
Sign.signin(check_authorization,provider);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
},"json");
|
},"json");
|
||||||
};
|
};
|
||||||
|
|
||||||
FreebaseLoadingDialog.prototype._load = function() {
|
check_authorization();
|
||||||
// do the real loading here
|
|
||||||
|
this._elmts.sandbox.click(function() {
|
||||||
|
//check_authorization();
|
||||||
|
});
|
||||||
|
|
||||||
|
this._elmts.freebase.click(function() {
|
||||||
|
if (!confirm("Are you sure your data is clean enough to enter Freebase?")) {
|
||||||
|
self._elmts.sandbox.attr("checked","checked");
|
||||||
|
self._elmts.freebase.removeAttr("checked");
|
||||||
|
selector.find("input").button('refresh');
|
||||||
|
}
|
||||||
|
//check_authorization();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
FreebaseLoadingDialog.prototype._load = function(self) {
|
||||||
|
$.post("/command/upload-data",
|
||||||
|
{
|
||||||
|
project: theProject.id,
|
||||||
|
"graph" : ($("#freebase-loading-graph-selector-freebase").attr("checked")) ? "otg" : "sandbox",
|
||||||
|
"info" : $("#freebase-loading-tripleloader-info textarea").val()
|
||||||
|
},
|
||||||
|
function(data) {
|
||||||
|
var body = $(".dialog-body");
|
||||||
|
if ("status" in data && data.status == "200 OK") {
|
||||||
|
body.html('<div class="freebase-loading-tripleloader-message"><h2>Data successfully loaded!</h2>' + data.message + '</div>');
|
||||||
|
} else {
|
||||||
|
body.html('<div class="freebase-loading-tripleloader-message"><h2>Error loading data!</h2><pre>' + JSON.stringify(data,null,2) + '</pre></div>');
|
||||||
|
}
|
||||||
|
$("button#freebase-loading-load").text("Close").unbind().click(function() {
|
||||||
|
self._dismiss();
|
||||||
|
});
|
||||||
|
$("button#freebase-loading-cancel").hide();
|
||||||
|
},
|
||||||
|
"json"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
FreebaseLoadingDialog.prototype._dismiss = function() {
|
FreebaseLoadingDialog.prototype._dismiss = function() {
|
||||||
|
@ -57,26 +57,6 @@
|
|||||||
return window.open(url, windowname || "", params_list.join(","));
|
return window.open(url, windowname || "", params_list.join(","));
|
||||||
},
|
},
|
||||||
|
|
||||||
block : function() {
|
|
||||||
if ($.blockUI) {
|
|
||||||
$.blockUI({ css: {
|
|
||||||
border: 'none',
|
|
||||||
padding: '15px',
|
|
||||||
backgroundColor: '#000',
|
|
||||||
'-webkit-border-radius': '10px',
|
|
||||||
'-moz-border-radius': '10px',
|
|
||||||
opacity: .5,
|
|
||||||
color: '#fff'
|
|
||||||
} });
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
unblock : function() {
|
|
||||||
if ($.unblockUI) {
|
|
||||||
$.unblockUI();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
signintize : function(cont) {
|
signintize : function(cont) {
|
||||||
$('.signedin').show();
|
$('.signedin').show();
|
||||||
$('.signedout').hide();
|
$('.signedout').hide();
|
||||||
@ -87,33 +67,31 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
signin : function(success, provider, width, height) {
|
signin : function(success, provider, width, height) {
|
||||||
var newwin = window.Sign.popup("/command/authorize?" + $.param({ "provider" : provider}), width, height);
|
var newwin = window.Sign.popup("/command/authorize/" + provider, width, height);
|
||||||
|
|
||||||
console.log(newwin);
|
|
||||||
|
|
||||||
|
if (newwin !== null) {
|
||||||
newwin.opener = window;
|
newwin.opener = window;
|
||||||
|
}
|
||||||
|
|
||||||
window.onauthorization = function() {
|
window.onauthorization = function() {
|
||||||
window.Sign.block();
|
|
||||||
if (typeof success == 'undefined') {
|
if (typeof success == 'undefined') {
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
} else {
|
} else {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: "/command/check-authorization",
|
url: "/command/check-authorization/" + provider,
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
window.user = data;
|
window.user = data;
|
||||||
window.Sign.signintize(success);
|
window.Sign.signintize(success);
|
||||||
window.Sign.unblock();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (window.focus) {
|
if (window.focus && newwin !== null) {
|
||||||
newwin.focus();
|
newwin.focus();
|
||||||
console.log("focus");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -124,17 +102,13 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
signout : function(success,provider) {
|
signout : function(success,provider) {
|
||||||
window.Sign.block();
|
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: "/command/deauthorize",
|
url: "/command/deauthorize/" + provider,
|
||||||
data: { "provider" : provider },
|
|
||||||
success: function() {
|
success: function() {
|
||||||
if (typeof success == 'undefined') {
|
if (typeof success == 'undefined') {
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
} else {
|
} else {
|
||||||
window.Sign.signoutize(success);
|
window.Sign.signoutize(success);
|
||||||
window.Sign.unblock();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1,8 +1,34 @@
|
|||||||
.freebase-loading-tripleloader-data {
|
.freebase-loading-tripleloader-data {
|
||||||
height: 500px;
|
height: 400px;
|
||||||
|
width: 99%;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
border: 1px solid #aaa;
|
border: 1px solid #aaa;
|
||||||
white-space: pre;
|
white-space: pre;
|
||||||
padding: 0.3em 0.5em 0.5em 0.5em;
|
padding: 0.3em 0.5em 0.5em 0.5em;
|
||||||
font-family: monospace;
|
font-family: monospace;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.freebase-loading-tripleloader-message {
|
||||||
|
height: 500px;
|
||||||
|
overflow: auto;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
padding: 0.3em 0.5em 0.5em 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.freebase-loading-authorization {
|
||||||
|
margin: 0em 2em;
|
||||||
|
padding: 0.6em 0.8em;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
background-color: #fff;
|
||||||
|
-moz-border-radius: 0.8em;
|
||||||
|
-webkit-border-radius: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.freebase-loading-tripleloader-info {
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.freebase-loading-tripleloader-info textarea {
|
||||||
|
width: 99%;
|
||||||
|
height: 5em;
|
||||||
|
}
|
@ -20,18 +20,15 @@ import javax.swing.JMenu;
|
|||||||
import javax.swing.JMenuBar;
|
import javax.swing.JMenuBar;
|
||||||
import javax.swing.JMenuItem;
|
import javax.swing.JMenuItem;
|
||||||
|
|
||||||
import org.apache.log4j.Appender;
|
|
||||||
import org.apache.log4j.ConsoleAppender;
|
|
||||||
import org.apache.log4j.Level;
|
import org.apache.log4j.Level;
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
import org.mortbay.jetty.Connector;
|
import org.mortbay.jetty.Connector;
|
||||||
import org.mortbay.jetty.Server;
|
import org.mortbay.jetty.Server;
|
||||||
import org.mortbay.jetty.bio.SocketConnector;
|
import org.mortbay.jetty.bio.SocketConnector;
|
||||||
import org.mortbay.jetty.webapp.WebAppContext;
|
import org.mortbay.jetty.webapp.WebAppContext;
|
||||||
import org.mortbay.log.Log;
|
|
||||||
import org.mortbay.util.Scanner;
|
import org.mortbay.util.Scanner;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.metaweb.util.logging.IndentingLayout;
|
|
||||||
import com.metaweb.util.signal.AbstractSignalHandler;
|
import com.metaweb.util.signal.AbstractSignalHandler;
|
||||||
import com.metaweb.util.threads.ThreadPoolExecutorAdapter;
|
import com.metaweb.util.threads.ThreadPoolExecutorAdapter;
|
||||||
|
|
||||||
@ -46,28 +43,7 @@ public class Gridworks {
|
|||||||
static private int port;
|
static private int port;
|
||||||
static private String host;
|
static private String host;
|
||||||
|
|
||||||
private static Logger root = Logger.getRootLogger();
|
final static Logger logger = LoggerFactory.getLogger("gridworks");
|
||||||
private static Logger logger = Logger.getLogger("com.metaweb.gridworks");
|
|
||||||
|
|
||||||
public static void log(String message) {
|
|
||||||
logger.info(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void info(String message) {
|
|
||||||
logger.info(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void error(String message, Throwable t) {
|
|
||||||
logger.error(message, t);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void warn(String message) {
|
|
||||||
logger.warn(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void warn(String message, Throwable t) {
|
|
||||||
logger.warn(message, t);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getVersion() {
|
public static String getVersion() {
|
||||||
return VERSION;
|
return VERSION;
|
||||||
@ -100,20 +76,15 @@ public class Gridworks {
|
|||||||
System.setProperty("com.apple.eawt.CocoaComponent.CompatibilityMode", "false");
|
System.setProperty("com.apple.eawt.CocoaComponent.CompatibilityMode", "false");
|
||||||
|
|
||||||
// tell the signpost library to log
|
// tell the signpost library to log
|
||||||
System.setProperty("debug","true");
|
//System.setProperty("debug","true");
|
||||||
|
|
||||||
// if not already set, make sure jython can find its python stuff
|
// if not already set, make sure jython can find its python stuff
|
||||||
if (System.getProperty("python.path") == null) {
|
if (System.getProperty("python.path") == null) {
|
||||||
System.setProperty("python.path","lib/python");
|
System.setProperty("python.path","lib/python");
|
||||||
}
|
}
|
||||||
|
|
||||||
// initialize the log4j system
|
// set the log verbosity level
|
||||||
Appender console = new ConsoleAppender(new IndentingLayout());
|
org.apache.log4j.Logger.getRootLogger().setLevel(Level.toLevel(Configurations.get("gridworks.verbosity","info")));
|
||||||
root.setLevel(Level.ALL);
|
|
||||||
root.addAppender(console);
|
|
||||||
|
|
||||||
Logger jetty_logger = Logger.getLogger("org.mortbay.log");
|
|
||||||
jetty_logger.setLevel(Level.WARN);
|
|
||||||
|
|
||||||
tempDir = new File(Configurations.get("gridworks.temp","temp"));
|
tempDir = new File(Configurations.get("gridworks.temp","temp"));
|
||||||
if (!tempDir.exists()) tempDir.mkdirs();
|
if (!tempDir.exists()) tempDir.mkdirs();
|
||||||
@ -137,7 +108,7 @@ public class Gridworks {
|
|||||||
GridworksClient client = new GridworksClient();
|
GridworksClient client = new GridworksClient();
|
||||||
client.init(host,port);
|
client.init(host,port);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.warn("Sorry, some error prevented us from launching the browser for you.\n\n Point your browser to http://" + host + ":" + port + "/ to start using Gridworks.");
|
logger.warn("Sorry, some error prevented us from launching the browser for you.\n\n Point your browser to http://" + host + ":" + port + "/ to start using Gridworks.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -152,6 +123,8 @@ public class Gridworks {
|
|||||||
|
|
||||||
class GridworksServer extends Server {
|
class GridworksServer extends Server {
|
||||||
|
|
||||||
|
final static Logger logger = LoggerFactory.getLogger("gridworks_server");
|
||||||
|
|
||||||
private ThreadPoolExecutor threadPool;
|
private ThreadPoolExecutor threadPool;
|
||||||
|
|
||||||
public void init(String host, int port) throws Exception {
|
public void init(String host, int port) throws Exception {
|
||||||
@ -177,11 +150,11 @@ class GridworksServer extends Server {
|
|||||||
|
|
||||||
File webXml = new File(contextRoot, "WEB-INF/web.xml");
|
File webXml = new File(contextRoot, "WEB-INF/web.xml");
|
||||||
if (!webXml.isFile()) {
|
if (!webXml.isFile()) {
|
||||||
Gridworks.warn("Warning: Failed to find web application. Could not find 'web.xml' at '" + webXml.getAbsolutePath() + "'");
|
logger.warn("Warning: Failed to find web application. Could not find 'web.xml' at '" + webXml.getAbsolutePath() + "'");
|
||||||
System.exit(-1);
|
System.exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
Gridworks.info("Initializing context: '" + contextPath + "' from '" + contextRoot.getAbsolutePath() + "'");
|
logger.info("Initializing context: '" + contextPath + "' from '" + contextRoot.getAbsolutePath() + "'");
|
||||||
WebAppContext context = new WebAppContext(contextRoot.getAbsolutePath(), contextPath);
|
WebAppContext context = new WebAppContext(contextRoot.getAbsolutePath(), contextPath);
|
||||||
//context.setCopyWebDir(false);
|
//context.setCopyWebDir(false);
|
||||||
//context.setDefaultsDescriptor(null);
|
//context.setDefaultsDescriptor(null);
|
||||||
@ -217,7 +190,7 @@ class GridworksServer extends Server {
|
|||||||
scanList.add(new File(contextRoot, "WEB-INF/web.xml"));
|
scanList.add(new File(contextRoot, "WEB-INF/web.xml"));
|
||||||
findFiles(".class", new File(contextRoot, "WEB-INF/classes"), scanList);
|
findFiles(".class", new File(contextRoot, "WEB-INF/classes"), scanList);
|
||||||
|
|
||||||
Gridworks.info("Starting autoreloading scanner... ");
|
logger.info("Starting autoreloading scanner... ");
|
||||||
|
|
||||||
Scanner scanner = new Scanner();
|
Scanner scanner = new Scanner();
|
||||||
scanner.setScanInterval(Configurations.getInteger("gridworks.scanner.period",1));
|
scanner.setScanInterval(Configurations.getInteger("gridworks.scanner.period",1));
|
||||||
@ -228,10 +201,10 @@ class GridworksServer extends Server {
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public void filesChanged(List changedFiles) {
|
public void filesChanged(List changedFiles) {
|
||||||
try {
|
try {
|
||||||
Gridworks.info("Stopping context: " + contextRoot.getAbsolutePath());
|
logger.info("Stopping context: " + contextRoot.getAbsolutePath());
|
||||||
context.stop();
|
context.stop();
|
||||||
|
|
||||||
Gridworks.info("Starting context: " + contextRoot.getAbsolutePath());
|
logger.info("Starting context: " + contextRoot.getAbsolutePath());
|
||||||
context.start();
|
context.start();
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
throw new RuntimeException(ex);
|
throw new RuntimeException(ex);
|
||||||
|
Loading…
Reference in New Issue
Block a user