/**
* <copyright>
* </copyright>
*
*
*/
package org.feature.multi.perspective.mapping.viewmapping.resource.mtext.mopp;
/**
* The MtextTokenResolverFactory class provides access to all generated token
* resolvers. By giving the name of a defined token, the corresponding resolve can
* be obtained. Despite the fact that this class is called TokenResolverFactory is
* does NOT create new token resolvers whenever a client calls methods to obtain a
* resolver. Rather, this class maintains a map of all resolvers and creates each
* resolver at most once.
*/
public class MtextTokenResolverFactory implements org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextTokenResolverFactory {
private java.util.Map<String, org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextTokenResolver> tokenName2TokenResolver;
private java.util.Map<String, org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextTokenResolver> featureName2CollectInTokenResolver;
private static org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextTokenResolver defaultResolver = new org.feature.multi.perspective.mapping.viewmapping.resource.mtext.analysis.MtextDefaultTokenResolver();
public MtextTokenResolverFactory() {
tokenName2TokenResolver = new java.util.LinkedHashMap<String, org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextTokenResolver>();
featureName2CollectInTokenResolver = new java.util.LinkedHashMap<String, org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextTokenResolver>();
registerTokenResolver("QUOTED_60_62", new org.feature.multi.perspective.mapping.viewmapping.resource.mtext.analysis.MtextQUOTED_60_62TokenResolver());
registerTokenResolver("QUOTED_34_34", new org.feature.multi.perspective.mapping.viewmapping.resource.mtext.analysis.MtextQUOTED_34_34TokenResolver());
}
public org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextTokenResolver createTokenResolver(String tokenName) {
return internalCreateResolver(tokenName2TokenResolver, tokenName);
}
public org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextTokenResolver createCollectInTokenResolver(String featureName) {
return internalCreateResolver(featureName2CollectInTokenResolver, featureName);
}
protected boolean registerTokenResolver(String tokenName, org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextTokenResolver resolver){
return internalRegisterTokenResolver(tokenName2TokenResolver, tokenName, resolver);
}
protected boolean registerCollectInTokenResolver(String featureName, org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextTokenResolver resolver){
return internalRegisterTokenResolver(featureName2CollectInTokenResolver, featureName, resolver);
}
protected org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextTokenResolver deRegisterTokenResolver(String tokenName){
return tokenName2TokenResolver.remove(tokenName);
}
private org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextTokenResolver internalCreateResolver(java.util.Map<String, org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextTokenResolver> resolverMap, String key) {
if (resolverMap.containsKey(key)){
return resolverMap.get(key);
} else {
return defaultResolver;
}
}
private boolean internalRegisterTokenResolver(java.util.Map<String, org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextTokenResolver> resolverMap, String key, org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextTokenResolver resolver) {
if (!resolverMap.containsKey(key)) {
resolverMap.put(key,resolver);
return true;
}
return false;
}
}