Import project web ui
Implements a page with a browse button to select a file to import. Modifies CustomMenuControler to show the import option. FEA: ItEr77S05BasicProjectImport
This commit is contained in:
parent
5ffdfeec20
commit
0d7c88f1cd
5 changed files with 151 additions and 0 deletions
|
|
@ -448,5 +448,10 @@
|
|||
<groupId>br.com.digilabs.jqplot</groupId>
|
||||
<artifactId>jqplot4java</artifactId>
|
||||
</dependency>
|
||||
<!-- ZK fileupload -->
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -273,6 +273,9 @@ public class CustomMenuController extends Div implements IMenuItemsRegister {
|
|||
globalView.goToOrdersList();
|
||||
}
|
||||
}, "01-introducion.html#id2"));
|
||||
// In order of see the Import project option in the menu
|
||||
planningItems.add(subItem(_("Import project"),
|
||||
"/orders/imports/projectImport.zul", ""));
|
||||
}
|
||||
if (SecurityUtils.isSuperuserOrUserInRoles(UserRole.ROLE_PLANNING)) {
|
||||
planningItems.add(subItem(_("Resources Load"), new ICapture() {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,95 @@
|
|||
package org.libreplan.web.orders.imports;
|
||||
|
||||
import static org.libreplan.web.I18nHelper._;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
import org.libreplan.business.orders.imports.OrderImporter;
|
||||
import org.libreplan.web.common.IMessagesForUser;
|
||||
import org.libreplan.web.common.Level;
|
||||
import org.libreplan.web.common.MessagesForUser;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.zkoss.util.media.Media;
|
||||
import org.zkoss.zk.ui.Component;
|
||||
import org.zkoss.zk.ui.util.GenericForwardComposer;
|
||||
|
||||
/**
|
||||
* Controller for import projects
|
||||
*
|
||||
* @author Alba Carro Pérez <alba.carro@gmail.com>
|
||||
*/
|
||||
public class ProjectImportController extends GenericForwardComposer {
|
||||
|
||||
/**
|
||||
* OrderImporter service.
|
||||
*/
|
||||
private OrderImporter orderImporterMPXJ;
|
||||
|
||||
private IMessagesForUser messages;
|
||||
|
||||
private Component messagesContainer;
|
||||
|
||||
public void doAfterCompose(Component comp) throws Exception {
|
||||
super.doAfterCompose(comp);
|
||||
comp.setAttribute("projectImportController", this);
|
||||
messages = new MessagesForUser(messagesContainer);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method called when the onUpload event happens.
|
||||
*
|
||||
* @param Media
|
||||
* Media to be imported.
|
||||
*/
|
||||
public void importProject(Media media) {
|
||||
|
||||
String file = media.getName();
|
||||
|
||||
if (checkFileFormat(file)) {
|
||||
|
||||
importProject(media.getStreamData(), file);
|
||||
|
||||
messages.showMessage(Level.INFO, _(file + ": Import successfully!"));
|
||||
|
||||
} else {
|
||||
messages.showMessage(Level.ERROR,
|
||||
_("The only current suported formats are mpp and planner."));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Imports an InputStream.
|
||||
*
|
||||
* @param streamData
|
||||
* InputStream with the data that is going to be imported.
|
||||
* @param file
|
||||
* Name of the file that we want to import.
|
||||
* @return boolean True if the streamData was imported, false if not.
|
||||
*/
|
||||
@Transactional
|
||||
private void importProject(InputStream streamData, String file) {
|
||||
|
||||
orderImporterMPXJ.storeOrder(orderImporterMPXJ
|
||||
.convertImportDataToOrder(orderImporterMPXJ.getImportData(
|
||||
streamData, file)));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks that the file has the correct format (.mpp or .planner).
|
||||
*
|
||||
* @param file
|
||||
* Name of the file.
|
||||
* @return boolean True if is correct, false if not.
|
||||
*/
|
||||
private boolean checkFileFormat(String file) {
|
||||
|
||||
if (file.matches("(?i).*mpp") | file.matches("(?i).*planner")) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
<!--
|
||||
This file is part of LibrePlan
|
||||
|
||||
Copyright (C) 2010-2011 Wireless Galicia, S.L.
|
||||
Copyright (C) 2012 Igalia, S.L.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<?page id="projectImport" title="${i18n:_('LibrePlan: Import Project')}"?>
|
||||
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?>
|
||||
<?init class="org.zkoss.zk.ui.util.Composition" arg0="/common/layout/template.zul"?>
|
||||
|
||||
<?link rel="shortcut icon" href="/common/img/favicon.ico" type="image/x-icon"?>
|
||||
<?link rel="stylesheet" type="text/css" href="/common/css/libreplan.css"?>
|
||||
<?link rel="stylesheet" type="text/css" href="/common/css/libreplan_zk.css"?>
|
||||
|
||||
|
||||
|
||||
<zk>
|
||||
<window id="importProject" self="@{define(content)}"
|
||||
apply="org.libreplan.web.orders.imports.ProjectImportController"
|
||||
title="${i18n:_('Import Project')}">
|
||||
|
||||
<vbox id="messagesContainer" />
|
||||
|
||||
<hbox>
|
||||
<button id="btnImportProject" label="${i18n:_('Upload Project')}" upload="true,maxsize=500" onUpload="projectImportController.importProject(event.getMedia())"/>
|
||||
</hbox>
|
||||
</window>
|
||||
</zk>
|
||||
6
pom.xml
6
pom.xml
|
|
@ -761,6 +761,12 @@
|
|||
<artifactId>mpxj</artifactId>
|
||||
<version>4.3.0</version>
|
||||
</dependency>
|
||||
<!-- ZK fileupload -->
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>1.4</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue