// Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved. // Released under the terms of the CPL Common Public License version 1.0. package fitnesse.wiki; import java.text.ParseException; import java.util.Date; public class WikiImportProperty extends WikiPageProperty { private static final long serialVersionUID = 1L; public static final String PROPERTY_NAME = "WikiImport"; private static final String SOURCE = "Source"; private static final String IS_ROOT = "IsRoot"; private static final String LAST_REMOTE_MODIFICATION = "LastRemoteModification"; private static final String AUTO_UPDATE = "AutoUpdate"; private WikiImportProperty() { } public WikiImportProperty(String source) { set(SOURCE, source); } public String getSourceUrl() { return get(SOURCE); } public boolean isRoot() { return has(IS_ROOT); } public void setRoot(boolean value) { if (value) set(IS_ROOT); else remove(IS_ROOT); } public boolean isAutoUpdate() { return has(AUTO_UPDATE); } public void setAutoUpdate(boolean value) { if (value) set(AUTO_UPDATE); else remove(AUTO_UPDATE); } public static boolean isImported(PageData pageData) { return pageData.hasAttribute(PROPERTY_NAME); } public static boolean isImportedSubWiki(PageData pageData) { WikiImportProperty importProperty = WikiImportProperty.createFrom(pageData.getProperties()); return importProperty != null && !importProperty.isRoot(); } public static WikiImportProperty createFrom(WikiPageProperty property) { if (property.has(PROPERTY_NAME)) { WikiImportProperty importProperty = new WikiImportProperty(); WikiPageProperty rawImportProperty = property.getProperty(PROPERTY_NAME); importProperty.set(SOURCE, rawImportProperty.getProperty(SOURCE)); importProperty.set(LAST_REMOTE_MODIFICATION, rawImportProperty.getProperty(LAST_REMOTE_MODIFICATION)); if (rawImportProperty.has(IS_ROOT)) importProperty.set(IS_ROOT, rawImportProperty.getProperty(IS_ROOT)); if (rawImportProperty.has(AUTO_UPDATE)) importProperty.set(AUTO_UPDATE, rawImportProperty.getProperty(AUTO_UPDATE)); return importProperty; } else return null; } public static boolean isAutoUpdated(PageData pageData) { WikiImportProperty importProperty = createFrom(pageData.getProperties()); return importProperty != null && importProperty.isAutoUpdate(); } public void addTo(WikiPageProperty rootProperty) { rootProperty.set(PROPERTY_NAME, this); } public void setLastRemoteModificationTime(Date date) { set(LAST_REMOTE_MODIFICATION, getTimeFormat().format(date)); } public Date getLastRemoteModificationTime() { Date date = new Date(0); String strValue = get(LAST_REMOTE_MODIFICATION); if (strValue != null) { try { date = getTimeFormat().parse(strValue); } catch (ParseException e) { date = new Date(0); } } return date; } }