blob: 7e26d2ab4c10d403e811a6e766c100a5f6e7ea3f [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2006 IBM Corporation and others.
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// which accompanies this distribution, and is available at
// http://www.eclipse.org/legal/epl-v10.html
//
// Contributors:
// IBM Corporation - initial implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.library.layout;
import java.io.File;
import java.io.PrintStream;
import org.eclipse.epf.library.ILibraryResourceManager;
import org.eclipse.epf.library.LibraryResources;
import org.eclipse.epf.library.util.ContentResourceScanner;
import org.eclipse.epf.library.util.LibraryUtil;
import org.eclipse.epf.library.util.ResourceHelper;
import org.eclipse.epf.uma.MethodConfiguration;
import org.eclipse.epf.uma.MethodElement;
import org.eclipse.osgi.util.NLS;
/**
* default implementation for IContentValidator. This validator is used for browsing and preview
*
* @author Jinhua Xi
*
*/
public class DefaultContentValidator implements IContentValidator {
protected PrintStream info;
protected PrintStream warning;
protected PrintStream error;
protected String pubDir;
//protected boolean showBrokenLinks = true;
/**
* constructor
*
*/
public DefaultContentValidator() {
this(null);
}
/**
* constructor
* @param pubDir
*/
public DefaultContentValidator(String pubDir) {
this.pubDir = pubDir;
info = System.out;
warning = System.out;
error = System.err;
}
/**
* set publish dir
* @param pubDir String
*/
public void setPublishDir(String pubDir) {
this.pubDir = pubDir;
}
public String getPublishDir() {
return this.pubDir;
}
// public void setShowBrokenLinks(boolean flag) {
// showBrokenLinks = flag;
// }
public boolean showBrokenLinks() {
return true; // default
}
public void scanContent(IElementLayout layout, String content) throws Exception {
MethodElement owner = layout.getElement();
String contentPath = layout.getFilePath();
ContentResourceScanner scanner = getScanner(owner);
if ( scanner != null ) {
scanner.resolveResources(owner, content, contentPath);
}
}
/**
* Returns the content resource scanner for the element.
*/
private ContentResourceScanner getScanner(MethodElement owner) {
ILibraryResourceManager resMgr = ResourceHelper.getResourceMgr(owner);
if ( resMgr == null ) {
return null;
}
String rootContentPath = resMgr.getLogicalPluginPath(owner);
File src_root = new File(resMgr.getPhysicalPluginPath(owner));
File tgt_root = new File(pubDir, rootContentPath);
ContentResourceScanner scanner = new ContentResourceScanner(src_root, tgt_root, rootContentPath, this);
return scanner;
}
public LinkInfo validateLink(MethodElement owner, String attributes,
String text, MethodConfiguration config, String tag) {
LinkInfo info = new LinkInfo(owner, this, pubDir, tag);
info.validateLink(attributes, text, config);
return info;
}
public void logInfo(MethodElement owner, String message) {
info
.println(NLS.bind(LibraryResources.DefaultContentValidator_MSG1, ((owner == null) ? "" : LibraryUtil.getTypeName(owner)) + ": " + message)); //$NON-NLS-1$ //$NON-NLS-2$
info.flush();
}
public void logWarning(MethodElement owner, String message) {
warning
.println(NLS.bind(LibraryResources.DefaultContentValidator_MSG4, ((owner == null) ? "" : LibraryUtil.getTypeName(owner)) + ": " + message)); //$NON-NLS-1$ //$NON-NLS-2$
warning.flush();
}
public void logError(MethodElement owner, String message, Throwable th) {
error
.println(NLS.bind(LibraryResources.DefaultContentValidator_MSG7, ((owner == null) ? "" : LibraryUtil.getTypeName(owner)) + ": " + message)); //$NON-NLS-1$ //$NON-NLS-2$
if (th != null) {
th.printStackTrace(error);
}
error.flush();
}
public void logInfo(String message) {
logInfo(null, message);
}
public void logWarning(String message) {
logWarning(null, message);
}
public void logError(String message, Throwable th) {
logError(null, message, th);
}
public void logMissingReference(MethodElement owner,
MethodElement refElement) {
logWarning(
owner,
NLS.bind(LibraryResources.DefaultContentValidator_MSG10, LibraryUtil.getTypeName(refElement)));
}
public void logMissingReference(MethodElement owner, String guid,
String linkedText) {
logWarning(owner, NLS.bind(LibraryResources.DefaultContentValidator_MSG11, guid));
}
public void logMissingResource(MethodElement owner, File resourceFile,
String url) {
String msg;
if (resourceFile != null) {
msg = NLS.bind(LibraryResources.DefaultContentValidator_MSG12, resourceFile.getPath(), url);
} else {
msg = NLS.bind(LibraryResources.DefaultContentValidator_MSG15, url);
}
logWarning(owner, msg);
}
public void logInvalidExternalLink(MethodElement owner, String url,
String message) {
String text;
if (message != null && message.length() > 0) {
text = NLS.bind(LibraryResources.DefaultContentValidator_MSG19, url, message);
} else {
text = NLS.bind(LibraryResources.DefaultContentValidator_MSG17, url);
}
logWarning(owner, text);
}
/**
* check if the element is discarded or not
* discarded elements will be treated as out side the configursation
*
* @param owner MethodElement the owner of the element
* @param Object feature EStructuralFeature or OppositeFeature
* @param e MethodElement the element to be checked
*/
public boolean isDiscarded(MethodElement owner, Object feature, MethodElement e) {
return false;
}
public boolean isDiscarded(MethodElement owner, Object feature, MethodElement e, MethodConfiguration config) {
return false;
}
public void dispose() {
}
public void addReferencedElement(MethodElement owner, MethodElement e)
{
}
public void setDiscardedElement(MethodElement e) {
}
public boolean showExtraInfoForDescriptors() {
return BrowsingLayoutSettings.INSTANCE.isShowExtraInfoForDescriptors();
}
/**
* show descriptors on method element page
*/
public boolean showRelatedDescriptors() {
return true;
}
/**
* get the tab id for the activity layout
*
* @return String
*/
public String getDefaultActivityTab() {
return null; // use the default
}
}