Bug 172931 - remove the GUID that is appended to the resource file name
diff --git a/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/layout/Bookmark.java b/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/layout/Bookmark.java
similarity index 99%
rename from plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/layout/Bookmark.java
rename to plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/layout/Bookmark.java
index 2b10418..3f7de9b 100755
--- a/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/layout/Bookmark.java
+++ b/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/layout/Bookmark.java
@@ -8,7 +8,7 @@
 // Contributors:
 // IBM Corporation - initial implementation
 //------------------------------------------------------------------------------
-package org.eclipse.epf.publishing.layout;
+package org.eclipse.epf.library.layout;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/layout/BookmarkList.java b/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/layout/BookmarkList.java
similarity index 98%
rename from plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/layout/BookmarkList.java
rename to plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/layout/BookmarkList.java
index a66f082..5da106f 100755
--- a/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/layout/BookmarkList.java
+++ b/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/layout/BookmarkList.java
@@ -8,7 +8,7 @@
 // Contributors:
 // IBM Corporation - initial implementation
 //------------------------------------------------------------------------------
-package org.eclipse.epf.publishing.layout;
+package org.eclipse.epf.library.layout;
 
 import java.util.ArrayList;
 import java.util.Iterator;
diff --git a/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/services/NameCache.java b/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/services/NameCache.java
index 6212ee7..6e62ab0 100755
--- a/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/services/NameCache.java
+++ b/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/services/NameCache.java
@@ -17,6 +17,7 @@
 
 import org.eclipse.epf.common.utils.StrUtil;
 import org.eclipse.epf.library.LibraryService;
+import org.eclipse.epf.library.layout.Bookmark;
 import org.eclipse.epf.persistence.MultiFileResourceSetImpl;
 import org.eclipse.epf.uma.MethodElement;
 
@@ -154,4 +155,53 @@
 
 		return guid;
 	}
+	
+	/**
+	 * get the file name with the given prefix and extension
+	 * @param view Bookmark
+	 * @param namePrefix String prefix for the name
+	 * @param nameSuffix String suffix for the name
+	 * @param ext String file extension, for example, ".html"
+	 * @return String
+	 */	 
+	public String getFileName(Bookmark view, String namePrefix,
+			String nameSuffix, String ext) {
+		
+		String existingElementName = null;
+		StringBuffer buffer = new StringBuffer();
+		if (namePrefix != null) {
+			buffer.append(namePrefix);
+		}
+		
+		if (view.getPresentationName() == "")
+			return "0" + ext; //$NON-NLS-1$
+		
+		if (!gMap.isEmpty()) {
+			existingElementName =  (String) gMap.get(view.getUniqueId());
+		}
+		// Browsing: Browsing CP with special chars failed with
+		// blank pages and Script Error need to make a valid file name
+		buffer.append((existingElementName != null) ? existingElementName : StrUtil.removeSpecialCharacters(view.getPresentationName()));
+		if (nameSuffix != null) {
+			buffer.append(nameSuffix);
+		}
+
+		if (ext != null) {
+			if (ext.indexOf(".") < 0) //$NON-NLS-1$
+			{
+				ext = "." + ext; //$NON-NLS-1$
+			}
+			buffer.append(ext);
+		}
+
+		ElementFile a = new ElementFile(view.getUniqueId(), buffer.toString());
+		
+		if (a != null && aSet.add(a)) {
+			int extDot = a.getFileName().lastIndexOf(".");
+			aMap.put((extDot < 0) ? a.getFileName() : a.getFileName().substring(0, extDot), view.getUniqueId());			 
+			gMap.put(view.getUniqueId(), (extDot < 0) ? a.getFileName() : a.getFileName().substring(0, extDot));
+		}
+
+		return a.getFileName(); 
+	}
 }
diff --git a/plugins/org.eclipse.epf.publishing/META-INF/MANIFEST.MF b/plugins/org.eclipse.epf.publishing/META-INF/MANIFEST.MF
index cc840cd..f40ced5 100755
--- a/plugins/org.eclipse.epf.publishing/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.epf.publishing/META-INF/MANIFEST.MF
@@ -11,7 +11,6 @@
  org.eclipse.core.runtime
 Eclipse-LazyStart: true
 Export-Package: org.eclipse.epf.publishing,
- org.eclipse.epf.publishing.layout,
  org.eclipse.epf.publishing.services,
  org.eclipse.epf.publishing.services.index,
  org.eclipse.epf.publishing.services.search,
diff --git a/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/layout/package.html b/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/layout/package.html
deleted file mode 100755
index ccd51f6..0000000
--- a/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/layout/package.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<html>
-<body>
-Provides implementation support for generating bookmarks in a published configuration.
-</body>
-</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/AbstractViewBuilder.java b/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/AbstractViewBuilder.java
index 6f56378..fbfa13f 100755
--- a/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/AbstractViewBuilder.java
+++ b/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/AbstractViewBuilder.java
@@ -22,6 +22,7 @@
 import org.eclipse.epf.common.utils.Timer;
 import org.eclipse.epf.library.LibraryService;
 import org.eclipse.epf.library.configuration.ConfigurationHelper;
+import org.eclipse.epf.library.layout.Bookmark;
 import org.eclipse.epf.library.layout.ElementLayoutManager;
 import org.eclipse.epf.library.layout.HtmlBuilder;
 import org.eclipse.epf.library.layout.IElementLayout;
@@ -29,7 +30,6 @@
 import org.eclipse.epf.library.util.IconUtil;
 import org.eclipse.epf.library.util.ResourceHelper;
 import org.eclipse.epf.publishing.PublishingResources;
-import org.eclipse.epf.publishing.layout.Bookmark;
 import org.eclipse.epf.uma.ContentCategory;
 import org.eclipse.epf.uma.DescribableElement;
 import org.eclipse.epf.uma.MethodConfiguration;
diff --git a/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ConfigurationViewBuilder.java b/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ConfigurationViewBuilder.java
index 55ed06a..0d74c76 100755
--- a/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ConfigurationViewBuilder.java
+++ b/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ConfigurationViewBuilder.java
@@ -40,6 +40,7 @@
 import org.eclipse.epf.library.edit.process.IBSItemProvider;
 import org.eclipse.epf.library.edit.util.ProcessUtil;
 import org.eclipse.epf.library.edit.util.Suppression;
+import org.eclipse.epf.library.layout.Bookmark;
 import org.eclipse.epf.library.layout.IElementLayout;
 import org.eclipse.epf.library.layout.elements.ActivityLayout;
 import org.eclipse.epf.library.layout.elements.ProcessElementItem;
@@ -48,7 +49,6 @@
 import org.eclipse.epf.library.layout.util.XmlElement;
 import org.eclipse.epf.library.util.LibraryUtil;
 import org.eclipse.epf.publishing.PublishingResources;
-import org.eclipse.epf.publishing.layout.Bookmark;
 import org.eclipse.epf.publishing.util.PublishingUtil;
 import org.eclipse.epf.uma.Activity;
 import org.eclipse.epf.uma.Artifact;
diff --git a/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/DefaultSiteGenerator.java b/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/DefaultSiteGenerator.java
index 8f4e6b0..63bf004 100755
--- a/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/DefaultSiteGenerator.java
+++ b/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/DefaultSiteGenerator.java
@@ -8,12 +8,12 @@
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.epf.common.utils.FileUtil;
 import org.eclipse.epf.common.utils.StrUtil;
+import org.eclipse.epf.library.layout.Bookmark;
+import org.eclipse.epf.library.layout.BookmarkList;
 import org.eclipse.epf.library.layout.HtmlBuilder;
 import org.eclipse.epf.library.layout.LayoutResources;
 import org.eclipse.epf.library.layout.util.XmlElement;
 import org.eclipse.epf.publishing.PublishingPlugin;
-import org.eclipse.epf.publishing.layout.Bookmark;
-import org.eclipse.epf.publishing.layout.BookmarkList;
 import org.eclipse.epf.publishing.util.PublishingUtil;
 
 public class DefaultSiteGenerator implements ISiteGenerator {
diff --git a/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ISiteGenerator.java b/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ISiteGenerator.java
index da9d099..25688ba 100755
--- a/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ISiteGenerator.java
+++ b/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ISiteGenerator.java
@@ -2,8 +2,8 @@
 
 import java.util.List;
 
+import org.eclipse.epf.library.layout.Bookmark;
 import org.eclipse.epf.library.layout.HtmlBuilder;
-import org.eclipse.epf.publishing.layout.Bookmark;
 
 public interface ISiteGenerator {
 			
diff --git a/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/PublishManager.java b/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/PublishManager.java
index 1e800d6..8e9592a 100755
--- a/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/PublishManager.java
+++ b/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/PublishManager.java
@@ -17,12 +17,12 @@
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.epf.common.utils.FileUtil;
 import org.eclipse.epf.library.configuration.ElementRealizer;
+import org.eclipse.epf.library.layout.Bookmark;
 import org.eclipse.epf.library.layout.ElementLayoutManager;
 import org.eclipse.epf.library.layout.HtmlBuilder;
 import org.eclipse.epf.library.layout.util.XmlElement;
 import org.eclipse.epf.publishing.PublishingPlugin;
 import org.eclipse.epf.publishing.PublishingResources;
-import org.eclipse.epf.publishing.layout.Bookmark;
 import org.eclipse.epf.publishing.services.index.DefinitionObject;
 import org.eclipse.epf.publishing.services.index.KeyWordIndexHelper;
 import org.eclipse.epf.publishing.util.PublishingUtil;