From f59c6167d70c9f00debc0f20e5f907066ba1f463 Mon Sep 17 00:00:00 2001 From: Nils Christian Ehmke <nie@informatik.uni-kiel.de> Date: Sat, 4 Feb 2012 11:00:16 +0100 Subject: [PATCH] Checkstyle; Corrected some bugs; Continued with the uploading-functionality --- .../AvailableDependenciesBean.java | 33 +++++++++++++++++-- .../application/AvailableProjectsBean.java | 18 ++++++++-- .../beans/application/package-info.java | 24 ++++++++++++++ .../request/SelectedDependenciesBean.java | 14 ++++++++ .../webgui/beans/request/package-info.java | 25 ++++++++++++++ .../session/DependencyUploadController.java | 26 +++++++++++++-- .../beans/session/SelectedProjectBean.java | 14 ++++++++ .../webgui/beans/session/package-info.java | 25 ++++++++++++++ .../kieker/webgui/common/FileManager.java | 19 ++++++++++- .../kieker/webgui/common/package-info.java | 25 ++++++++++++++ .../kieker/webgui/converter/package-info.java | 25 ++++++++++++++ Kieker.WebGUI/src/main/webapp/main.xhtml | 10 ++++-- .../src/main/webapp/manageDependencies.xhtml | 9 +++-- 13 files changed, 254 insertions(+), 13 deletions(-) create mode 100644 Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/package-info.java create mode 100644 Kieker.WebGUI/src/main/java/kieker/webgui/beans/request/package-info.java create mode 100644 Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/package-info.java create mode 100644 Kieker.WebGUI/src/main/java/kieker/webgui/common/package-info.java create mode 100644 Kieker.WebGUI/src/main/java/kieker/webgui/converter/package-info.java diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/AvailableDependenciesBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/AvailableDependenciesBean.java index 7230e399..1840faf7 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/AvailableDependenciesBean.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/AvailableDependenciesBean.java @@ -36,22 +36,51 @@ public class AvailableDependenciesBean { private final List<MIDependency> dependencies; + /** + * Creates a new instance of this class. + */ public AvailableDependenciesBean() { this.dependencies = FileManager.getInstance().loadAllDependencies(); } + /** + * Delivers the currently available dependencies as a list. + * + * @return All available dependencies. + */ public List<MIDependency> getDependencies() { return this.dependencies; } - public void upload(final UploadedFile file) { + /** + * Tries to upload a given file as a new dependency. If the dependency does already exist, it will be overwritten. + * + * @param file + * The file to be uploaded. + */ + public void uploadDependency(final UploadedFile file) { final MIDependency dependency = FileManager.getInstance().uploadDependency(file); if (dependency != null) { + /* + * Is is possible that we already have a dependency with the same name and have to remove it first. + */ + for (final MIDependency dep : this.dependencies) { + if (dep.getFilePath().equals(dependency.getFilePath())) { + this.dependencies.remove(dep); + break; + } + } this.dependencies.add(dependency); } } - public void delete(final MIDependency dependency) { + /** + * Tries to delete a given dependency. + * + * @param dependency + * The dependency to be removed. + */ + public void deleteDependency(final MIDependency dependency) { final boolean result = FileManager.getInstance().deleteDependency(dependency); if (result) { this.dependencies.remove(dependency); diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/AvailableProjectsBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/AvailableProjectsBean.java index d176369b..5c5d1232 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/AvailableProjectsBean.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/AvailableProjectsBean.java @@ -45,11 +45,21 @@ public class AvailableProjectsBean { private final List<MIProject> projects; private final MAnalysisMetaModelFactory factory; + /** + * Creates a new instance of this class. + */ public AvailableProjectsBean() { this.projects = FileManager.getInstance().loadAllProjects(); this.factory = new MAnalysisMetaModelFactory(); } + /** + * Uses the given name to create a new project. If a project with the same + * name does already exist, nothing happens. + * + * @param projectName + * The name of the new project. + */ public synchronized void addProject(final String projectName) { /* * Create a new project. @@ -68,7 +78,7 @@ public class AvailableProjectsBean { final FacesContext context = FacesContext.getCurrentInstance(); final SelectedProjectBean bean = context.getApplication().evaluateExpressionGet(context, "#{selectedProjectBean}", SelectedProjectBean.class); - if (bean.getMainProject() == null) { + if (bean != null && bean.getMainProject() == null) { bean.setMainProject(project); } @@ -76,7 +86,11 @@ public class AvailableProjectsBean { } } - @SuppressWarnings("unused") + /** + * Delivers the currently available projects as a tree root. + * + * @returns The root of the currently available projects. + */ public synchronized TreeNode getProjectsRoot() { final TreeNode root = new DefaultTreeNode("Root", null); diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/package-info.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/package-info.java new file mode 100644 index 00000000..3fd1c061 --- /dev/null +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/package-info.java @@ -0,0 +1,24 @@ +/*************************************************************************** + * 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. + ***************************************************************************/ + +/** + * This package contains all beans with application scope. + */ +package kieker.webgui.beans.application; diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/request/SelectedDependenciesBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/request/SelectedDependenciesBean.java index 625fc06b..812fdfd0 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/request/SelectedDependenciesBean.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/request/SelectedDependenciesBean.java @@ -34,6 +34,9 @@ public class SelectedDependenciesBean { private DualListModel<String> dependencies; + /** + * Creates a new instance of this class. + */ public SelectedDependenciesBean() { final List<String> source = new ArrayList<String>(); final List<String> target = new ArrayList<String>(); @@ -44,10 +47,21 @@ public class SelectedDependenciesBean { this.dependencies = new DualListModel<String>(source, target); } + /** + * Delivers the stored dependencies within this bean. + * + * @return The dependencies dual model. + */ public DualListModel<String> getDependencies() { return this.dependencies; } + /** + * Sets the dependencies to be stored within this bean to a new value. + * + * @param dependencies + * The new dependencies dual model. + */ public void setDependencies(final DualListModel<String> dependencies) { this.dependencies = dependencies; } diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/request/package-info.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/request/package-info.java new file mode 100644 index 00000000..e4a52d8d --- /dev/null +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/request/package-info.java @@ -0,0 +1,25 @@ +/*************************************************************************** + * 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. + ***************************************************************************/ + +/** + * This package contains all beans with request scope. + */ +package kieker.webgui.beans.request; + diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/DependencyUploadController.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/DependencyUploadController.java index 1b80e64f..68430d29 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/DependencyUploadController.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/DependencyUploadController.java @@ -22,8 +22,9 @@ package kieker.webgui.beans.session; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; +import javax.faces.context.FacesContext; -import kieker.webgui.common.FileManager; +import kieker.webgui.beans.application.AvailableDependenciesBean; import org.primefaces.model.UploadedFile; @@ -42,15 +43,36 @@ public class DependencyUploadController { */ public DependencyUploadController() {} + /** + * Delivers the instance stored within this bean. + * + * @return The currently stored value within this bean. + */ public UploadedFile getFile() { return this.file; } + /** + * Sets the new value of the bean. + * + * @param file + * The file instance to be stored within this bean. + */ public void setFile(final UploadedFile file) { this.file = file; } + /** + * Tries to upload the currently stored value within this bean. + */ public void upload() { - FileManager.getInstance().uploadDependency(this.file); + if (this.file != null) { + final FacesContext context = FacesContext.getCurrentInstance(); + final AvailableDependenciesBean bean = context.getApplication().evaluateExpressionGet(context, "#{availableDependenciesBean}", + AvailableDependenciesBean.class); + if (bean != null) { + bean.uploadDependency(this.file); + } + } } } diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/SelectedProjectBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/SelectedProjectBean.java index 8ed87922..017b7703 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/SelectedProjectBean.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/SelectedProjectBean.java @@ -24,6 +24,7 @@ import javax.faces.bean.SessionScoped; import kieker.analysis.model.analysisMetaModel.MIProject; +import org.primefaces.event.NodeSelectEvent; import org.primefaces.model.DefaultTreeNode; import org.primefaces.model.TreeNode; @@ -82,6 +83,10 @@ public class SelectedProjectBean { return this.selectedNode; } + public void onNodeSelect(final NodeSelectEvent event) { + this.setSelectedNode(event.getTreeNode()); + } + public void setSelectedNode(final TreeNode selectedNode) { this.selectedNode = selectedNode; if (selectedNode != null && selectedNode.getData() instanceof MIProject) { @@ -91,6 +96,15 @@ public class SelectedProjectBean { } } + /** + * Delivers the "font weight" (whether the font is bold or normal) for a + * given project. This can be especially be used to mark a selected main + * project. + * + * @param project + * The project to be checked. + * @return "bold" if the given project is the current main project, "normal" otherwise. + */ public String getFontWeight(final MIProject project) { if (project == this.mainProject) { return "bold"; diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/package-info.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/package-info.java new file mode 100644 index 00000000..41ada39c --- /dev/null +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/package-info.java @@ -0,0 +1,25 @@ +/*************************************************************************** + * 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. + ***************************************************************************/ + +/** + * This package contains all beans with session scope. + */ +package kieker.webgui.beans.session; + diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/FileManager.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/FileManager.java index b836ae0a..00dea2e7 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/FileManager.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/FileManager.java @@ -59,11 +59,17 @@ public final class FileManager { private static final FileManager INSTANCE = new FileManager(); private final MAnalysisMetaModelFactory factory; + /** + * Creates a new instance of this class. + */ private FileManager() { this.checkAndCreateDirectories(); this.factory = new MAnalysisMetaModelFactory(); } + /** + * Checks whether all directories are available and creates them if necessary. + */ private synchronized void checkAndCreateDirectories() { /* * Make sure that the directories exist and create them if necessary. @@ -129,7 +135,6 @@ public final class FileManager { */ public synchronized boolean saveNewProject(final MIProject project) { final String projectName = project.getName(); - final File dirProject = new File(FileManager.PROJECT_DIR + File.separator + projectName); /* @@ -250,6 +255,11 @@ public final class FileManager { return FileManager.INSTANCE; } + /** + * This method tries to load all available dependencies from the file system. + * + * @return A list containing all available dependencies. If there are no files, an empty list will be returned. + */ public List<MIDependency> loadAllDependencies() { final List<MIDependency> resultList = new ArrayList<MIDependency>(); /* @@ -271,6 +281,13 @@ public final class FileManager { return resultList; } + /** + * Tries to delete a given dependency. + * + * @param dependency + * The dependency to be removed. + * @return true iff the dependency exists and the removal was succesful. + */ public boolean deleteDependency(final MIDependency dependency) { final File file = new File(dependency.getFilePath()); if (file.isFile()) { diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/package-info.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/package-info.java new file mode 100644 index 00000000..a28a880a --- /dev/null +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/package-info.java @@ -0,0 +1,25 @@ +/*************************************************************************** + * 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. + ***************************************************************************/ + +/** + * This package contains all classes with general and common purpose. + */ +package kieker.webgui.common; + diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/converter/package-info.java b/Kieker.WebGUI/src/main/java/kieker/webgui/converter/package-info.java new file mode 100644 index 00000000..14eab31e --- /dev/null +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/converter/package-info.java @@ -0,0 +1,25 @@ +/*************************************************************************** + * 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. + ***************************************************************************/ + +/** + * This package contains all converters used within the project. + */ +package kieker.webgui.converter; + diff --git a/Kieker.WebGUI/src/main/webapp/main.xhtml b/Kieker.WebGUI/src/main/webapp/main.xhtml index 4f108d78..1b6da6e5 100644 --- a/Kieker.WebGUI/src/main/webapp/main.xhtml +++ b/Kieker.WebGUI/src/main/webapp/main.xhtml @@ -13,7 +13,7 @@ <h:body> <!-- This is the layout for the whole page. --> - <p:layout fullPage="true"> + <p:layout id="layout" fullPage="true"> <!-- ******************************************************************************** --> <!-- This is the top unit within the layout and is used for the menu bar. --> @@ -34,7 +34,9 @@ <!-- This is the submenu for the current project, for example if someone doesn't want to use the context menu within the browser. --> <p:submenu label="Current Project"> <p:menuitem value="Save Project" ajax="true" /> - <p:menuitem value="Set as Main Project" ajax="true" /> + <p:menuitem value="Set as Main Project" ajax="true" + action="#{selectedProjectBean.setMainProject(selectedProjectBean.getSelectedProject())}" + update="projectsForm" /> <p:separator /> <p:menuitem value="Delete Project" ajax="true" /> @@ -57,12 +59,13 @@ <!-- ******************************************************************************** --> <!-- The following layout is at the left side of the page and shows the available projects. --> - <p:layoutUnit header="Projects" collapsible="true" position="west" + <p:layoutUnit id="projectsLayout" header="Projects" collapsible="true" position="west" size="200" resizable="true" minSize="100"> <h:form id="projectsForm"> <p:tree selection="#{selectedProjectBean.selectedNode}" id="projectsTree" selectionMode="single" style="width: auto" value="#{availableProjectsBean.projectsRoot}" var="node"> + <p:ajax event="select" listener="#{selectedProjectBean.onNodeSelect}"/> <p:treeNode type="project"> <h:outputText style="font-weight: #{selectedProjectBean.getFontWeight(node)}" @@ -198,6 +201,7 @@ <br /> <br /> <p:commandButton value="Ok" action="#{availableProjectsBean.addProject(stringBean.string)}" + update="projectsForm" oncomplete="newProjectDialog.hide()" /> <p:spacer width="100" height="10" /> <p:commandButton value="Cancel" onclick="newProjectDialog.hide()" /> diff --git a/Kieker.WebGUI/src/main/webapp/manageDependencies.xhtml b/Kieker.WebGUI/src/main/webapp/manageDependencies.xhtml index 66751840..7e389e97 100644 --- a/Kieker.WebGUI/src/main/webapp/manageDependencies.xhtml +++ b/Kieker.WebGUI/src/main/webapp/manageDependencies.xhtml @@ -27,7 +27,7 @@ <p:layoutUnit header="Currently available Dependencies" position="center" > <!-- This form shows the currently available dependencies. --> - <h:form> + <h:form id="currentDependenciesForm"> <p:dataTable id="currentDependencies" value="#{availableDependenciesBean.dependencies}" var="dependency" paginator="true" rows="10" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" > <p:column> @@ -50,9 +50,12 @@ </div> </p:column> - <p:column style="width:40px"> + <p:column style="width:40px"> + <f:facet name="header"> + </f:facet> <div align="center"> - <p:commandButton icon="ui-icon-trash" title="Delete" action="{availableDependenciesBean(dependency)}"/> + <p:commandButton ajax="true" update="currentDependenciesForm" icon="ui-icon-trash" title="Delete" + action="#{availableDependenciesBean.deleteDependency(dependency)}"/> </div> </p:column> </p:dataTable> -- GitLab