/*******************************************************************************
* Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Exadel, Inc. and Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.jsf.model.impl;
import org.jboss.tools.common.model.impl.OrderedObjectImpl;
import org.jboss.tools.jsf.model.JSFConstants;
public class NavigationRuleObjectImpl extends OrderedObjectImpl implements JSFConstants {
private static final long serialVersionUID = 7691168836237996351L;
static int lastIndex = -1;
int defaultIndex = lastIndex--;
public String getPresentationString() {
String f = "" + getAttributeValue(ATT_FROM_VIEW_ID);
f = "".equals(f)?JSFConstants.EMPTY_NAVIGATION_RULE_NAME:f;
String index = "" + getAttributeValue("index");
return "0".equals(index) ? f : f + " (" + index + ")";
}
public String getAttributeValue(String name) {
if("presentation".equals(name)) {
return getPresentationString();
}
return super.getAttributeValue(name);
}
public String getPathPart() {
String path = getAttributeValue(ATT_FROM_VIEW_ID);
if(path == null) path = "" + System.identityHashCode(this);
return toNavigationRulePathPart(path) + ":" + getAttributeValue("index");
}
public String get(String name) {
String v = super.get(name);
if("index".equals(name) && (v == null || v.length() == 0)) {
return "" + defaultIndex;
}
return v;
}
public static String toNavigationRulePathPart(String path) {
return "rules:" + path.replace('/', '#');
}
public static String toFromViewId(String pathpart) {
if(!pathpart.startsWith("rules:")) return pathpart;
pathpart = pathpart.substring(6).replace('#', '/');
int i = pathpart.lastIndexOf(':');
return (i < 0) ? pathpart : pathpart.substring(0, i);
}
}