Skip to content

Commit

Permalink
Adding Job.Instance.getInfo()
Browse files Browse the repository at this point in the history
  • Loading branch information
marigostra committed Feb 29, 2024
1 parent d785260 commit 30e84c4
Show file tree
Hide file tree
Showing 9 changed files with 97 additions and 146 deletions.
57 changes: 23 additions & 34 deletions src/main/java/org/luwrain/core/Commands.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,7 @@ static Command[] getCommands(Core core, org.luwrain.core.shell.Conversations con
}),

new Cmd(
"search",
(luwrain)->{
// core.activateAreaSearch();

"search", luwrain->{
final Area activeArea = core.getActiveArea(true);
if (activeArea == null)
return;
Expand All @@ -78,58 +75,41 @@ static Command[] getCommands(Core core, org.luwrain.core.shell.Conversations con
}),

new Cmd(
"ok",
(luwrain)->{
core.enqueueEvent(new SystemEvent(SystemEvent.Code.OK));
}),
"ok", luwrain->core.enqueueEvent(new SystemEvent(SystemEvent.Code.OK))),

new Cmd(
"cancel",
(luwrain)->{
core.enqueueEvent(new SystemEvent(SystemEvent.Code.CANCEL));
}),
"cancel", luwrain->core.enqueueEvent(new SystemEvent(SystemEvent.Code.CANCEL))),

new Cmd(
"close",
(luwrain)->{
core.enqueueEvent(new SystemEvent(SystemEvent.Code.CLOSE));
}),
"close", luwrain->core.enqueueEvent(new SystemEvent(SystemEvent.Code.CLOSE))),

new Cmd(
"gc",
(luwrain)->{
System.gc();
}),
"gc", luwrain->System.gc()),

new Cmd(
"save",
(luwrain)->{
"save", luwrain->{
core.enqueueEvent(new SystemEvent(SystemEvent.Code.SAVE));
}),

new Cmd(
"open",
(luwrain)->{
"open", luwrain->{
final File res = conversations.open();
if (res != null)
core.openFiles(new String[]{res.getAbsolutePath()});
}),

new Cmd(
"announce",
(luwrain)->{
"announce", luwrain->{
core.announceActiveArea();
}),

new Cmd(
"refresh",
(luwrain)->{
"refresh", luwrain->{
core.enqueueEvent(new SystemEvent(SystemEvent.Code.REFRESH));
}),

new Cmd(
"announce-line",
(luwrain)->{
"announce-line", luwrain->{
final Area area = core.getActiveArea(true);
if (area == null)
return;
Expand Down Expand Up @@ -528,9 +508,10 @@ static Command[] getCommands(Core core, org.luwrain.core.shell.Conversations con
},

new Cmd(
"run",
(luwrain)->{
final String cmd = Popups.editWithHistory(core.luwrain, luwrain.i18n().getStaticStr("RunPopupName"), luwrain.i18n().getStaticStr("RunPopupPrefix"), "", osCmdHistory);
"run", luwrain->{
final String cmd = Popups.editWithHistory(core.luwrain,
luwrain.i18n().getStaticStr("RunPopupName"),
luwrain.i18n().getStaticStr("RunPopupPrefix"), "", osCmdHistory);
if (cmd == null || cmd.trim().isEmpty())
return;
final String dir;
Expand All @@ -543,7 +524,15 @@ static Command[] getCommands(Core core, org.luwrain.core.shell.Conversations con
dir = "";
} else
dir = "";
luwrain.newJob("sys", new String[]{ cmd.trim() }, "", EnumSet.noneOf(Luwrain.JobFlags.class), null);
luwrain.newJob("sys", new String[]{ cmd.trim() }, "", EnumSet.noneOf(Luwrain.JobFlags.class), new EmptyJobListener(){
@Override public void onStatusChange(Job.Instance instance)
{
luwrain.runUiSafely(()->{
Popups.text(luwrain, "проба", "проба:", "");
});

}
});
}),
};
}
Expand Down
58 changes: 17 additions & 41 deletions src/main/java/org/luwrain/core/EmptyJobInstance.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
Copyright 2012-2022 Michael Pozhidaev <[email protected]>
Copyright 2012-2024 Michael Pozhidaev <[email protected]>
This file is part of LUWRAIN.
Expand All @@ -18,21 +18,24 @@

package org.luwrain.core;

import java.util.*;

import org.luwrain.core.Job.*;

import static org.luwrain.core.Job.*;
import static org.luwrain.core.NullCheck.*;

public class EmptyJobInstance implements Job.Instance
{
protected final Listener listener;
protected final String name;
protected Map<String, List<String>> info = new HashMap<>();
private Status status = Status.RUNNING;
private int exitCode = EXIT_CODE_INVALID;
private String state = "";
private String[] multilineState = new String[0], nativeState = new String[0];

public EmptyJobInstance(Listener listener, String name)
{
NullCheck.notEmpty(name, "name");
notEmpty(name, "name");
this.listener = listener;
this.name = name;
}
Expand Down Expand Up @@ -64,50 +67,23 @@ public EmptyJobInstance(String name)
return this.status == Status.FINISHED && this.exitCode == EXIT_CODE_OK;
}

public void setSingleLineState(String value)
public void setInfo(String infoType, List<String> value)
{
NullCheck.notNull(value, "value");
notEmpty(infoType, "infoType");
notNull(value, "value");
if (this.status != Status.RUNNING)
throw new IllegalStateException("The job '" + this.name + "' is not running");
this.state = value;
this.info.put(infoType, value);
if (this.listener != null)
this.listener.onSingleLineStateChange(this);
}

@Override public String getSingleLineState()
{
return this.state;
}

public void setMultilineState(String[] value)
{
NullCheck.notNullItems(value, "value");
if (this.status != Status.RUNNING)
throw new IllegalStateException("The job '" + this.name + "' is not running");
this.multilineState = value.clone();
if (this.listener != null)
this.listener.onMultilineStateChange(this);
this.listener.onInfoChange(this, infoType, value);
}

@Override public String[] getMultilineState()
@Override public List<String> getInfo(String infoType)
{
return this.multilineState.clone();
}

public void setNativeState(String[] value)
{
NullCheck.notNullItems(value, "value");
if (this.status != Status.RUNNING)
throw new IllegalStateException("The job '" + this.name + "' is not running");
this.nativeState = value.clone();
if (this.listener != null)
this.listener.onNativeStateChange(this);
}

@Override public String[] getNativeState()
{
return this.nativeState.clone();
}
notEmpty(infoType, "infoType");
final var res = this.info.get(infoType);
return res != null?res:Arrays.asList();
}

public void stop(int exitCode)
{
Expand Down
15 changes: 4 additions & 11 deletions src/main/java/org/luwrain/core/EmptyJobListener.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
Copyright 2012-2022 Michael Pozhidaev <[email protected]>
Copyright 2012-2024 Michael Pozhidaev <[email protected]>
This file is part of LUWRAIN.
Expand All @@ -14,19 +14,12 @@
General Public License for more details.
*/

//LWR_API 1.0

package org.luwrain.core;

import java.util.List;

import org.luwrain.core.Job.Instance;
import java.util.*;

public class EmptyJobListener implements Job.Listener
{
@Override public void onInfoChange(Job.Instance instance, String type, List<String> value){}
@Override public void onStatusChange(Instance instance) {}
@Override public void onSingleLineStateChange(Instance instance) {}
@Override public void onMultilineStateChange(Instance instance) {}
@Override public void onNativeStateChange(Instance instance) {}
@Override public void onStatusChange(Job.Instance instance) {}
@Override public void onInfoChange(Job.Instance instance, String infoType, List<String> value) {}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
Copyright 2012-2022 Michael Pozhidaev <[email protected]>
Copyright 2012-2024 Michael Pozhidaev <[email protected]>
This file is part of LUWRAIN.
Expand All @@ -14,19 +14,21 @@
General Public License for more details.
*/

//LWR_API 1.0

package org.luwrain.core;

public final class ErrorJob implements Job.Instance
import java.util.*;

import static org.luwrain.core.NullCheck.*;

public final class ErrorJobInstance implements Job.Instance
{
private final String name;
private final String message;

public ErrorJob(String name, String message)
public ErrorJobInstance(String name, String message)
{
NullCheck.notEmpty(name, "name");
NullCheck.notEmpty(message, "message");
notEmpty(name, "name");
notEmpty(message, "message");
this.name = name;
this.message = message;
}
Expand Down Expand Up @@ -55,18 +57,11 @@ public ErrorJob(String name, String message)
return false;
}

@Override public String getSingleLineState()
{
return message;
}

@Override public String[] getMultilineState()
{
return new String[]{message};
}

@Override public String[] getNativeState()
@Override public List<String> getInfo(String infoType)
{
return new String[]{message};
notEmpty(infoType, "infoType");
if (infoType.equals("main"))
return Arrays.asList(message);
return Arrays.asList();
}
}
7 changes: 1 addition & 6 deletions src/main/java/org/luwrain/core/Job.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,6 @@ public interface Listener
{
void onStatusChange(Instance instance);
void onInfoChange(Instance instance, String infoType, List<String> value);
void onSingleLineStateChange(Instance instance);
void onMultilineStateChange(Instance instance);
void onNativeStateChange(Instance instance);
}

public interface Instance
Expand All @@ -43,9 +40,7 @@ public interface Instance
Status getStatus();
int getExitCode();
boolean isFinishedSuccessfully();
String getSingleLineState();
String[] getMultilineState();
String[] getNativeState();
List<String> getInfo(String infoType);
void stop();
}

Expand Down
22 changes: 5 additions & 17 deletions src/main/java/org/luwrain/core/JobsManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -75,35 +75,23 @@ public final class Entry implements Job.Listener, Job.Instance
notNull(listener, "listener");
this.listener = listener;
}

@Override public String getInstanceName() { return instance.getInstanceName(); }
@Override public Job.Status getStatus() { return instance.getStatus(); }
@Override public int getExitCode() { return instance.getExitCode(); }
@Override public boolean isFinishedSuccessfully() { return instance.isFinishedSuccessfully(); }
@Override public String getSingleLineState() { return instance.getSingleLineState(); }
@Override public String[] getMultilineState() { return instance.getMultilineState(); }
@Override public String[] getNativeState() { return instance.getNativeState(); }
@Override public List<String> getInfo(String infoType) { return instance.getInfo(infoType); }
@Override public void stop() { instance.stop(); }

@Override public void onInfoChange(Job.Instance instance, String type, List<String> value){}
@Override public void onInfoChange(Job.Instance instance, String type, List<String> value)
{
listener.onInfoChange(instance, type, value);
}
@Override public void onStatusChange(Job.Instance instance)
{
listener.onStatusChange(this);
if (instance.getStatus() == Job.Status.FINISHED)
onFinish(this);
}
@Override public void onSingleLineStateChange(Job.Instance instance)
{
listener.onSingleLineStateChange(this);
}
@Override public void onMultilineStateChange(Job.Instance instance)
{
listener.onMultilineStateChange(this);
}
@Override public void onNativeStateChange(Job.Instance instance)
{
listener.onNativeStateChange(this);
}
@Override public String toString()
{
return getInstanceName();
Expand Down
26 changes: 26 additions & 0 deletions src/main/java/org/luwrain/core/events/UpdateEvent.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/*
Copyright 2012-2024 Michael Pozhidaev <[email protected]>
This file is part of LUWRAIN.
LUWRAIN is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
LUWRAIN is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
*/

package org.luwrain.core.events;

import org.luwrain.core.*;

public final class UpdateEvent extends Event
{
public UpdateEvent()
{
}
}
Loading

0 comments on commit 30e84c4

Please sign in to comment.