Skip to content
Snippets Groups Projects
Commit 0ce71ca1 authored by Nils Christian Ehmke's avatar Nils Christian Ehmke
Browse files

Continued with the connections; Modified details

parent 0b442a46
No related branches found
No related tags found
No related merge requests found
......@@ -34,6 +34,8 @@ import javax.faces.context.FacesContext;
import kieker.analysis.model.analysisMetaModel.MIAnalysisPlugin;
import kieker.analysis.model.analysisMetaModel.MIDependency;
import kieker.analysis.model.analysisMetaModel.MIInputPort;
import kieker.analysis.model.analysisMetaModel.MIOutputPort;
import kieker.analysis.model.analysisMetaModel.MIPlugin;
import kieker.analysis.model.analysisMetaModel.MIProject;
import kieker.analysis.model.analysisMetaModel.MIProperty;
......@@ -44,10 +46,12 @@ import kieker.analysis.plugin.AbstractPlugin;
import kieker.analysis.plugin.AbstractReaderPlugin;
import kieker.analysis.repository.AbstractRepository;
import kieker.common.configuration.Configuration;
import kieker.webgui.common.Connection;
import kieker.webgui.common.FileManager;
import kieker.webgui.common.PluginClassLoader;
import kieker.webgui.common.PluginFinder;
import org.eclipse.emf.common.util.EList;
import org.primefaces.event.NodeSelectEvent;
import org.primefaces.model.TreeNode;
......@@ -83,6 +87,8 @@ public class SelectedProjectBean {
*/
private MIProject mainProject;
private List<Connection> connections;
/**
* Creates a new instance of this class.
*/
......@@ -90,6 +96,7 @@ public class SelectedProjectBean {
/*
* No code necessary.
*/
this.connections = new ArrayList<Connection>();
}
/**
......@@ -109,6 +116,7 @@ public class SelectedProjectBean {
*/
public final void setMainProject(final MIProject mainProject) {
this.mainProject = mainProject;
this.connections = this.getConnectionsFromMainProject();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "", "New main project: " + mainProject.getName()));
}
......@@ -270,7 +278,7 @@ public class SelectedProjectBean {
SelectedProjectBean.URL_LOCALHOST, FileManager.getInstance().getFullPath(lib)));
for (final Class<AbstractRepository> repository : repositories) {
if (!Modifier.isAbstract(repository.getModifiers())) {
list.add((Class<AbstractRepository>) repository);
list.add(repository);
}
}
} catch (final MalformedURLException ex) {
......@@ -331,4 +339,35 @@ public class SelectedProjectBean {
public final void removePlugin(final MIPlugin plugin) {
this.mainProject.getPlugins().remove(plugin);
}
private List<Connection> getConnectionsFromMainProject() {
final List<Connection> result = new ArrayList<Connection>();
if (this.mainProject != null) {
final EList<MIPlugin> mPlugins = this.mainProject.getPlugins();
for (final MIPlugin mPlugin : mPlugins) {
final EList<MIOutputPort> mOutputPorts = mPlugin.getOutputPorts();
for (final MIOutputPort mOutputPort : mOutputPorts) {
final EList<MIInputPort> mInputPorts = mOutputPort.getSubscribers();
for (final MIInputPort mInputPort : mInputPorts) {
result.add(new Connection(mPlugin, mInputPort.getParent(), mInputPort, mOutputPort));
}
}
}
}
return result;
}
public List<Connection> getConnections() {
return this.connections;
}
public void addConnection() {
this.connections.add(new Connection(null, null, null, null));
}
public void submitConnections() {
// TODO
}
}
/***************************************************************************
* Copyright 2012 by
* + Christian-Albrechts-University of Kiel
* + Department of Computer Science
* + Software Engineering Group
* and others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
package kieker.webgui.common;
import kieker.analysis.AnalysisController;
import kieker.analysis.model.analysisMetaModel.MIInputPort;
import kieker.analysis.model.analysisMetaModel.MIOutputPort;
import kieker.analysis.model.analysisMetaModel.MIPlugin;
import kieker.analysis.plugin.AbstractPlugin;
/**
*
* @author Nils Christian Ehmke
*/
public class Connection {
private MIPlugin source;
private MIPlugin destination;
private MIInputPort inputPort;
private MIOutputPort outputPort;
public Connection(MIPlugin source, MIPlugin destination, MIInputPort inputPort, MIOutputPort outputPort) {
this.source = source;
this.destination = destination;
this.inputPort = inputPort;
this.outputPort = outputPort;
}
public MIPlugin getDestination() {
return destination;
}
public void setDestination(MIPlugin destination) {
this.destination = destination;
}
public MIInputPort getInputPort() {
return inputPort;
}
public void setInputPort(MIInputPort inputPort) {
this.inputPort = inputPort;
}
public MIOutputPort getOutputPort() {
return outputPort;
}
public void setOutputPort(MIOutputPort outputPort) {
this.outputPort = outputPort;
}
public MIPlugin getSource() {
return source;
}
public void setSource(MIPlugin source) {
this.source = source;
}
public boolean isValid() {
if (source == null || destination == null || inputPort == null || outputPort == null) {
return false;
}
// TODO: This is not necessarily valid currently
return true;
}
}
package kieker.webgui.converter;
import java.util.HashMap;
import java.util.concurrent.ConcurrentHashMap;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import kieker.analysis.model.analysisMetaModel.MIPlugin;
/**
*
* @author Nils Christian Ehmke
*/
@FacesConverter(value = MIPluginToStringConverter.NAME)
public class MIPluginToStringConverter implements Converter {
/**
* This is the name of this converter.
*/
public static final String NAME = "kieker.webgui.converter.MIPluginToStringConverter";
private static ConcurrentHashMap<String, MIPlugin> map = new ConcurrentHashMap<String, MIPlugin>();
/**
* Creates a new instance of this class.
*/
public MIPluginToStringConverter() {
}
@Override
public Object getAsObject(final FacesContext fc, final UIComponent uic, final String string) {
return map.get(string);
}
@Override
public String getAsString(final FacesContext fc, final UIComponent uic, final Object o) {
String result = o.toString();
map.put(result, (MIPlugin) o);
return result;
}
}
......@@ -108,7 +108,7 @@
<p:panel header="#{plugin.name}" closable="true" closeSpeed="200" toggleSpeed="200" toggleable="true" id="plugin" style="width: 30%">
<p:commandLink ajax="true" value="Configure" action="#{selectedPluginBean.setPlugin(plugin)}" update=":propertiesForm"/>
<br/>
<p:commandLink ajax="true" value="Connect" onclick="connectionDialog.show();"/>
<p:commandLink ajax="true" value="Connect" update=":connectionDialogForm" onclick="connectionDialog.show();"/>
<p:ajax event="close" listener="#{selectedProjectBean.removePlugin(plugin)}" update=":centerForm"/>
</p:panel>
<p:draggable for="plugin">
......@@ -151,7 +151,7 @@
<!-- ******************************************************************************** -->
<!-- The following layout unit is located at the right side of the page and is used as a tool palette. It shows the available plugins etc. -->
<p:layoutUnit position="east" size="200" header="Tool Palette"
<p:layoutUnit position="east" size="300" header="Tool Palette"
resizable="true" collapsible="true">
<h:form id="toolpalette">
<p:accordionPanel multiple="true" activeIndex="">
......@@ -186,8 +186,8 @@
<!-- Include the about-dialog. -->
<ui:include src="main\aboutDialog.xhtml" />
<!-- Include the dialog to handle the connections. -->
<!-- Include the dialog to handle the connections. -->
<ui:include src="main\connectionDialog.xhtml" />
</h:body>
......
......@@ -3,31 +3,68 @@
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<!-- ******************************************************************************** -->
<!-- This is the dialog for settings and properties. -->
<p:dialog id="connectionDialog" header="Manage Connections" resizable="false"
modal="true" widgetVar="connectionDialog">
<h:form>
<h:panelGrid columns="4">
<h:outputText value="Source"/>
<h:outputText value="Output-Port"/>
<h:outputText value="Destination"/>
<h:outputText value="Input-Ports"/>
<h:form id="connectionDialogForm">
<c:if test="#{not empty selectedProjectBean.mainProject}">
<p:commandButton value="Add Connection" ajax="true" action="#{selectedProjectBean.addConnection()}" update=":connectionDialogForm"/>
<br/><br/>
<p:dataTable value="#{selectedProjectBean.connections}" var="connection">
<p:column headerText="Source" style="width:125px">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{connection.source.name}"/>
</f:facet>
<f:facet name="input">
<h:selectOneMenu converter="kieker.webgui.converter.MIPluginToStringConverter" value="#{connection.source}">
<f:selectItems value="#{selectedProjectBean.mainProject.plugins}"
var="plugin"
itemLabel="#{plugin.name}"
itemValue="#{plugin}"/>
</h:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
<p:selectOneListbox>
<f:selectItems value="#{selectedProjectBean.mainProject.plugins}" var="plugin" itemLabel="#{plugin.name}"/>
</p:selectOneListbox>
<p:selectOneListbox/>
<p:selectOneListbox>
<f:selectItems value="#{selectedProjectBean.mainProject.plugins}" var="plugin" itemLabel="#{plugin.name}"/>
</p:selectOneListbox>
<p:selectManyMenu/>
</h:panelGrid>
<center>
<p:commandButton value="Ok" oncomplete="connectionDialog.hide();" />
</center>
<p:column headerText="Destination" style="width:125px">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{connection.destination.name}"/>
</f:facet>
<f:facet name="input">
<h:selectOneMenu converter="kieker.webgui.converter.MIPluginToStringConverter" value="#{connection.destination}">
<f:selectItems value="#{selectedProjectBean.mainProject.plugins}"
var="plugin"
itemLabel="#{plugin.name}"
itemValue="#{plugin}"/>
</h:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Valid" style="width:50px">
<c:if test="#{connection.valid}">
<h:outputText value="True"/>
</c:if>
<c:otherwise>
<h:outputText value="False"/>
</c:otherwise>
</p:column>
<p:column headerText="Options" style="width:50px">
<p:rowEditor />
</p:column>
</p:dataTable>
<br/>
<center>
<p:commandButton value="Ok" action="#{selectedProjectBean.submitConnections()}" oncomplete="connectionDialog.hide();" />
</center>
</c:if>
</h:form>
</p:dialog>
<!-- ******************************************************************************** -->
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment