Skip to content

Commit

Permalink
add integer slider
Browse files Browse the repository at this point in the history
  • Loading branch information
CI pipeline committed Oct 4, 2024
1 parent 51219e1 commit 229c7a7
Show file tree
Hide file tree
Showing 7 changed files with 548 additions and 182 deletions.
10 changes: 1 addition & 9 deletions src/org/processmining/ebi/objects/EbiEventLog.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,17 @@
import java.io.IOException;
import java.io.InputStream;

import javax.swing.JComponent;

import org.apache.commons.io.IOUtils;
import org.apache.commons.io.output.ByteArrayOutputStream;
import org.deckfour.xes.model.XLog;
import org.deckfour.xes.out.XSerializer;
import org.deckfour.xes.out.XesXmlSerializer;
import org.processmining.contexts.uitopia.annotations.UITopiaVariant;
import org.processmining.contexts.uitopia.annotations.Visualizer;
import org.processmining.earthmoversstochasticconformancechecking.tracealignments.StochasticTraceAlignmentsLogModel;
import org.processmining.framework.plugin.PluginContext;
import org.processmining.framework.plugin.annotations.Plugin;
import org.processmining.framework.plugin.annotations.PluginVariant;
import org.processmining.plugins.InductiveMiner.plugins.dialogs.IMMiningDialog;
import org.xeslite.parser.XesLiteXmlParser;

public class EbiEventLog {

public static String XLogToEbiEventLog(PluginContext context, XLog log) throws IOException {
public static String XLogToEbiString(PluginContext context, XLog log) throws IOException {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
XSerializer logSerializer = new XesXmlSerializer();
logSerializer.serialize(log, stream);
Expand Down
3 changes: 1 addition & 2 deletions src/org/processmining/ebi/objects/EbiFraction.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import org.processmining.framework.plugin.PluginContext;
import org.processmining.framework.plugin.annotations.Plugin;
import org.processmining.framework.plugin.annotations.PluginVariant;
import org.processmining.framework.util.HTMLToString;
import org.processmining.plugins.InductiveMiner.plugins.dialogs.IMMiningDialog;

public class EbiFraction {
Expand All @@ -36,7 +35,7 @@ public static BigFraction fromEbiString(PluginContext context, String value) {
JComponent.class }, parameterLabels = { "fraction" }, userAccessible = true)
@Visualizer
@UITopiaVariant(affiliation = IMMiningDialog.affiliation, author = IMMiningDialog.author, email = IMMiningDialog.email)
@PluginVariant(variantLabel = "Visualise stochastic trace alignments", requiredParameterLabels = { 0 })
@PluginVariant(variantLabel = "Visualise fraction", requiredParameterLabels = { 0 })
public JComponent fancy(PluginContext context, BigFraction fraction) {
return new HtmlPanel("Approximate value: " + fraction.doubleValue() + "<br>Exact value:<br>" + fraction.getNumerator() + "<br>/<br>" + fraction.getDenominator());
}
Expand Down
50 changes: 38 additions & 12 deletions src/org/processmining/ebi/objects/EbiInteger.java
Original file line number Diff line number Diff line change
@@ -1,30 +1,56 @@
package org.processmining.ebi.objects;

import javax.swing.JComponent;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import org.processmining.ebi.plugins.EbiDialog.EbiDialogPanel;
import org.processmining.framework.plugin.PluginContext;
import org.processmining.framework.util.HTMLToString;

import com.fluxicon.slickerbox.components.NiceIntegerSlider;
import com.fluxicon.slickerbox.components.NiceSlider.Orientation;
import com.fluxicon.slickerbox.factory.SlickerFactory;

public class EbiInteger {

public static String toEbiString(PluginContext context, int value) {
// TODO Auto-generated method stub
return null;
public static String toEbiString(PluginContext context, Integer value) {
return value.toString();
}

public static HTMLToString fromEbiString(PluginContext context, java.lang.String value) {
return new HTMLToString() {
public static Integer fromEbiString(PluginContext context, String value) {
return Integer.parseInt(value);
}

public static EbiDialogPanel create_input_panel(String explanation) {
SlickerFactory factory = SlickerFactory.instance();
return new EbiDialogPanel() {

private int value = 500;

@Override
public String toHTMLString(boolean includeHTMLTags) {
public JComponent create_left() {
return factory.createLabel(explanation);
}

@Override
public JComponent create_right() {
NiceIntegerSlider right = factory.createNiceIntegerSlider("", 0, Integer.MAX_VALUE, value, Orientation.HORIZONTAL);
right.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
value = right.getValue();
}
});

return right;
}

@Override
public Object getValue() {
return value;
}

};
}

public static EbiDialogPanel create_input_panel(String string) {
// TODO Auto-generated method stub
return null;
}

}
57 changes: 57 additions & 0 deletions src/org/processmining/ebi/objects/EbiLabelledPetriNet.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringEscapeUtils;
import org.processmining.acceptingpetrinet.models.AcceptingPetriNet;
import org.processmining.framework.plugin.PluginContext;
import org.processmining.models.graphbased.directed.petrinet.Petrinet;
import org.processmining.models.graphbased.directed.petrinet.PetrinetEdge;
Expand All @@ -23,6 +24,62 @@
import gnu.trove.map.hash.TObjectIntHashMap;

public class EbiLabelledPetriNet {

public static String AcceptingPetriNet2EbiString(PluginContext context, AcceptingPetriNet apn) throws Exception {
StringBuilder w = new StringBuilder();

w.append("stochastic labelled Petri net\n");
w.append("# number of places\\n");
w.append(apn.getNet().getPlaces().size() + "\n");

w.append("# initial marking\\n");
TObjectIntMap<Place> placemap = new TObjectIntHashMap<>();
{
int place = 0;
for (Place place_object: apn.getNet().getPlaces()) {
placemap.put(place_object, place);

//initial marking
for (int x = 0; x < apn.getInitialMarking().occurrences(place_object); x++) {
w.append(place + "\n");
}

place++;
}
}

w.append("# number of transitions\\n");
w.append(apn.getNet().getTransitions().size() + "\n");
int transition = 0;
for (Transition transition_object: apn.getNet().getTransitions()) {
w.append("# transition " + transition + "\n");
if (transition_object.isInvisible()) {
w.append("silent\n");
} else {
w.append("label " + StringEscapeUtils.escapeJava(transition_object.getLabel()) + "\n");
}

w.append("# number of input places\n");
w.append(apn.getNet().getInEdges(transition_object).size() + "\n");
for (PetrinetEdge<? extends PetrinetNode, ? extends PetrinetNode> edge : apn.getNet().getInEdges(transition_object)) {
Place place_object = (Place) edge.getSource();
int place = placemap.get(place_object);
w.append(place + "\n");
}

w.append("# number of output places\n");
w.append(apn.getNet().getOutEdges(transition_object).size() + "\n");
for (PetrinetEdge<? extends PetrinetNode, ? extends PetrinetNode> edge : apn.getNet().getOutEdges(transition_object)) {
Place place_object = (Place) edge.getTarget();
int place = placemap.get(place_object);
w.append(place + "\n");
}

transition++;
}

return w.toString();
}

public static PetrinetImpl EbiString2Petrinet(PluginContext context, String input) throws IOException {
PetrinetImpl result = new PetrinetImpl("");
Expand Down
51 changes: 40 additions & 11 deletions src/org/processmining/ebi/objects/EbiLogDiv.java
Original file line number Diff line number Diff line change
@@ -1,19 +1,48 @@
package org.processmining.ebi.objects;

import java.math.BigInteger;

import javax.swing.JComponent;

import org.processmining.contexts.uitopia.annotations.UITopiaVariant;
import org.processmining.contexts.uitopia.annotations.Visualizer;
import org.processmining.contexts.util.HtmlPanel;
import org.processmining.framework.plugin.PluginContext;
import org.processmining.framework.util.HTMLToString;
import org.processmining.framework.plugin.annotations.Plugin;
import org.processmining.framework.plugin.annotations.PluginVariant;
import org.processmining.plugins.InductiveMiner.plugins.dialogs.IMMiningDialog;

public class EbiLogDiv {

public BigInteger a;
public BigInteger b;
public BigInteger c;

public String approximate;

public static HTMLToString fromEbiString(PluginContext context, java.lang.String value) {
return new HTMLToString() {

@Override
public String toHTMLString(boolean includeHTMLTags) {
return value;
}

};
public static EbiLogDiv fromEbiString(PluginContext context, String value) {
//Ebi returns the value on the first line
String[] arr = value.split("\\R", 2);

//split in numerator/denominator
String[] arr2 = arr[0].split("/");

EbiLogDiv result = new EbiLogDiv();
result.a = new BigInteger(arr2[0].substring(4));
result.b = new BigInteger(arr2[1].substring(0, arr2[1].length() - 1));
result.c = new BigInteger(arr2[2]);

result.approximate = arr[0].substring(15);

return result;
}

}
@Plugin(name = "LogDiv", returnLabels = {"logdiv visualisation" }, returnTypes = {
JComponent.class }, parameterLabels = { "logdiv" }, userAccessible = true)
@Visualizer
@UITopiaVariant(affiliation = IMMiningDialog.affiliation, author = IMMiningDialog.author, email = IMMiningDialog.email)
@PluginVariant(variantLabel = "Visualise logdiv", requiredParameterLabels = { 0 })
public JComponent fancy(PluginContext context, EbiLogDiv logdiv) {
return new HtmlPanel("Approximate value: " + logdiv.approximate + "<br>Exact value: log(<br>" + logdiv.a + "<br>/<br>" + logdiv.b + ") / <br>" + logdiv.c);
}
}
2 changes: 1 addition & 1 deletion src/org/processmining/ebi/objects/EbiString.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

public class EbiString {

public static String toEbiString(String value) {
public static String toEbiString(PluginContext context, String value) {
return value;
}

Expand Down
Loading

0 comments on commit 229c7a7

Please sign in to comment.