Skip to content

Commit

Permalink
Moving WebCommand to GraalVM
Browse files Browse the repository at this point in the history
  • Loading branch information
marigostra committed Jun 8, 2022
1 parent d3a7928 commit 9715f75
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 63 deletions.
78 changes: 25 additions & 53 deletions src/main/java/org/luwrain/io/WebCommand.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
Copyright 2012-2019 Michael Pozhidaev <[email protected]>
Copyright 2012-2022 Michael Pozhidaev <[email protected]>
This file is part of LUWRAIN.
Expand All @@ -17,17 +17,18 @@
package org.luwrain.io;

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

import org.luwrain.core.*;
import org.luwrain.popups.*;
import org.luwrain.script.*;
import static org.luwrain.script.Hooks.*;
import static org.luwrain.script2.ScriptUtils.*;

public final class WebCommand implements Command
{
static private final String LOG_COMPONENT = "io";
static public final String WEB_OPEN_HOOK = "luwrain.web.open";
static private final String
HOOK_WEB_OPEN = "luwrain.web.open";

private final Set<String> history = new HashSet<>();

@Override public String getName()
{
Expand All @@ -36,8 +37,7 @@ public final class WebCommand implements Command

@Override public void onCommand(Luwrain luwrain)
{
NullCheck.notNull(luwrain, "luwrain");
final String query = Popups.text(luwrain, luwrain.i18n().getStaticStr("WebCommandPopupName"), luwrain.i18n().getStaticStr("WebCommandPopupPrefix"), "");
final String query = Popups.editWithHistory(luwrain, luwrain.i18n().getStaticStr("WebCommandPopupName"), luwrain.i18n().getStaticStr("WebCommandPopupPrefix"), "", history);
if (query == null || query.trim().isEmpty())
return;
final Object res = runWebOpenHook(luwrain, query);
Expand Down Expand Up @@ -73,59 +73,31 @@ public final class WebCommand implements Command

private Object runWebOpenHook(Luwrain luwrain, String query)
{
NullCheck.notNull(luwrain, "luwrain");
NullCheck.notEmpty(query, "query");
final Object obj;
try {
obj = new org.luwrain.script.hooks.ProviderHook(luwrain).run(WEB_OPEN_HOOK, new Object[]{query});
}
catch(RuntimeException e)
{
return e;
}
if (obj == null)
return null;
if (obj instanceof Boolean)
{
final Boolean bool = (Boolean)obj;
return bool.booleanValue()?bool:null;
}
final Object itemsObj = ScriptUtils.getMember(obj, "items");
if (itemsObj == null)
final Object obj = provider(luwrain, HOOK_WEB_OPEN, new Object[]{query});
if (obj == null || isNull(obj))
return null;
final List items = ScriptUtils.getArray(itemsObj);
if (isBoolean(obj))
return new Boolean(asBoolean(obj));
final Object[] items = asArray(getMember(obj, "items"));
if (items == null)
return null;
final List<WebSearchResult.Item> res = new ArrayList<>();
for(Object o: items)
if (o != null)
{
final Object titleObj = ScriptUtils.getMember(o, "title");
final Object snippetObj = ScriptUtils.getMember(o, "snippet");
final Object displayUrlObj = ScriptUtils.getMember(o, "displayUrl");
final Object clickUrlObj = ScriptUtils.getMember(o, "clickUrl");
if (titleObj == null || snippetObj == null ||
displayUrlObj == null || clickUrlObj == null)
continue;
final String title = ScriptUtils.getStringValue(titleObj);
final String snippet = ScriptUtils.getStringValue(snippetObj);
final String displayUrl = ScriptUtils.getStringValue(displayUrlObj);
final String clickUrl = ScriptUtils.getStringValue(clickUrlObj);
if (title == null || snippet == null ||
clickUrl == null || displayUrl == null)
final String
title = asString(getMember(o, "title")),
snippet = asString(getMember(o, "snippet")),
displayUrl = asString(getMember(o, "displayUrl")),
clickUrl = asString(getMember(o, "clickUrl"));
if (title == null || title.trim().isEmpty())
continue;
if (title.isEmpty() || clickUrl.isEmpty())
continue;
res.add(new WebSearchResult.Item(title, snippet, displayUrl, clickUrl));
res.add(new WebSearchResult.Item(title.trim(),
snippet != null?snippet.trim():"",
displayUrl != null?displayUrl.trim():"",
clickUrl != null?clickUrl.trim():""));
}
final String title;
final Object titleObj = ScriptUtils.getMember(obj, "title");
if(titleObj != null)
{
final String value = ScriptUtils.getStringValue(titleObj);
title = value != null?value:"";
} else
title = "";
return new WebSearchResult(title, res.toArray(new WebSearchResult.Item[res.size()]));
final String title = asString(getMember(obj, "title"));
return new WebSearchResult(title != null?title.trim():"", res.toArray(new WebSearchResult.Item[res.size()]));
}
}
11 changes: 1 addition & 10 deletions src/main/java/org/luwrain/popups/WebSearchResultPopup.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
Copyright 2012-2019 Michael Pozhidaev <[email protected]>
Copyright 2012-2022 Michael Pozhidaev <[email protected]>
This file is part of LUWRAIN.
Expand All @@ -14,7 +14,6 @@
General Public License for more details.
*/


package org.luwrain.popups;

import java.util.*;
Expand Down Expand Up @@ -50,9 +49,6 @@ public WebSearchResult.Item result()

static protected ListArea.Params<Object> createParams(Luwrain luwrain, String name, WebSearchResult res)
{
NullCheck.notNull(luwrain, "luwrain");
NullCheck.notNull(name, "name");
NullCheck.notNull(res, "res");
final ListArea.Params<Object> params = new ListArea.Params<>();
params.context = new DefaultControlContext(luwrain);
params.flags = EnumSet.of(ListArea.Flags.EMPTY_LINE_TOP);
Expand All @@ -65,7 +61,6 @@ static protected ListArea.Params<Object> createParams(Luwrain luwrain, String na

static protected Object[] createListItems(WebSearchResult res)
{
NullCheck.notNull(res, "res");
final List<Object> r = new ArrayList<>();
for(WebSearchResult.Item i: res.getItems())
{
Expand All @@ -78,8 +73,6 @@ static protected Object[] createListItems(WebSearchResult res)

static public WebSearchResult.Item open(Luwrain luwrain, WebSearchResult webSearchResult)
{
NullCheck.notNull(luwrain, "luwrain");
NullCheck.notNull(webSearchResult, "webSearchResult");
final WebSearchResultPopup popup = new WebSearchResultPopup(luwrain, webSearchResult.getTitle(), webSearchResult, Popups.DEFAULT_POPUP_FLAGS);
luwrain.popup(popup);
if (popup.wasCancelled())
Expand All @@ -96,7 +89,6 @@ public Appearance(ControlContext context)
}
@Override public boolean isSectionItem(Object obj)
{
NullCheck.notNull(obj, "obj");
return obj instanceof WebSearchResult.Item;
}
}
Expand All @@ -109,7 +101,6 @@ public Transition(ListArea.Model<Object> model)
}
@Override public boolean isSectionItem(Object obj)
{
NullCheck.notNull(obj, "obj");
return obj instanceof WebSearchResult.Item;
}
}
Expand Down

0 comments on commit 9715f75

Please sign in to comment.