/**
* Copyright (C) 2013 BonitaSoft S.A.
* BonitaSoft, 32 rue Gustave Eiffel - 38000 Grenoble
* This program 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 2.0 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.bonitasoft.web.rest.model.builder.page;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Date;
import org.apache.commons.io.FileUtils;
import org.bonitasoft.console.common.server.preferences.constants.WebBonitaConstantsUtils;
import org.bonitasoft.engine.page.ContentType;
import org.bonitasoft.engine.page.Page;
import org.bonitasoft.engine.page.impl.PageImpl;
import org.bonitasoft.web.rest.model.portal.page.PageItem;
import org.bonitasoft.web.rest.server.datastore.page.PageDatastore;
/**
* @author Fabio Lombardi
*
*/
public class PageItemBuilder {
protected long id = 1L;
protected String urlToken = "custompage_aName";
protected String displayName = "aDisplayName";
protected String description = "aDescription";
protected boolean isProvided = false;
protected Date creation_date = new Date(1);
protected long createdBy = 1L;
protected Date last_update_date = new Date(1);
protected String contentName = "page.zip";
protected long updatedBy = 1L;
private String zipFileName="/page.zip";
public static PageItemBuilder aPageItem() {
return new PageItemBuilder();
}
public PageItem build(final long tenantId) throws IOException, URISyntaxException {
final PageItem item = new PageItem();
item.setId(id);
item.setUrlToken(urlToken);
item.setDisplayName(displayName);
item.setDescription(description);
item.setIsProvided(isProvided);
item.setCreationDate(creation_date);
item.setCreatedByUserId(createdBy);
item.setLastUpdateDate(last_update_date);
item.setUpdatedByUserId(updatedBy);
item.setContentName(contentName);
final URL zipFileUrl = getClass().getResource(zipFileName);
final File zipFile = new File(zipFileUrl.toURI());
FileUtils.copyFileToDirectory(zipFile, WebBonitaConstantsUtils.getInstance(tenantId).getTempFolder());
item.setAttribute(PageDatastore.UNMAPPED_ATTRIBUTE_ZIP_FILE, zipFile.getName());
return item;
}
public Page toPage() {
final PageImpl pageImpl = new PageImpl(id, urlToken, displayName, isProvided, description, createdBy, 1l, 1l, 1l, contentName, ContentType.PAGE,null);
return pageImpl;
}
public PageItemBuilder fromEngineItem(final Page page) {
id = page.getId();
urlToken = page.getName();
displayName = page.getDisplayName();
description = page.getDescription();
isProvided = page.isProvided();
creation_date = page.getInstallationDate();
createdBy = page.getInstalledBy();
last_update_date = page.getLastModificationDate();
updatedBy = page.getLastUpdatedBy();
contentName = page.getContentName();
return this;
}
public PageItemBuilder withName(final String name) {
urlToken = name;
return this;
}
public PageItemBuilder withDescription(final String description) {
this.description = description;
return this;
}
public PageItemBuilder isProvided(final boolean isProvided) {
this.isProvided = isProvided;
return this;
}
public PageItemBuilder withZip(String zipFileName){
this.zipFileName = zipFileName;
return this;
}
}