/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ package org.apache.directory.studio.templateeditor.model; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; import org.apache.directory.studio.templateeditor.model.widgets.TemplateForm; /** * This abstract class defines the basic implementation for a template. * * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> */ public abstract class AbstractTemplate implements Template { /** * Indicates if the ID is valid or not. * * @param id * the id * @return * <code>true</code> if the ID is valid, * <code>false</code> if not. */ public static boolean isValidId( String id ) { return Pattern.matches( "[a-zA-Z][a-zA-Z0-9-.]*", id ); //$NON-NLS-1$ } /** The ID */ private String id; /** The title */ private String title; /** The structural object class */ private String structuralObjectClass; /** The list of auxiliary object classes */ private List<String> auxiliaryObjectClasses; /** The form */ private TemplateForm form; /** * Creates a new instance of AbstractTemplate. */ public AbstractTemplate() { init(); } /** * Creates a new instance of AbstractTemplate. * * @param id * the id of the template */ public AbstractTemplate( String id ) { this.id = id; init(); } /** * {@inheritDoc} */ public boolean addAuxiliaryObjectClass( String objectClass ) { return auxiliaryObjectClasses.add( objectClass ); } /** * {@inheritDoc} */ public List<String> getAuxiliaryObjectClasses() { return auxiliaryObjectClasses; } /** * {@inheritDoc} */ public TemplateForm getForm() { return form; } /** * {@inheritDoc} */ public String getId() { return id; } /** * Gets the structural object class. * * @return * the structural object class */ public String getStructuralObjectClass() { return structuralObjectClass; } /** * {@inheritDoc} */ public String getTitle() { return title; } /** * Initializes the fields of the AbstractTemplate. */ private void init() { auxiliaryObjectClasses = new ArrayList<String>(); } /** * {@inheritDoc} */ public boolean removeAuxiliaryObjectClass( String objectClass ) { return auxiliaryObjectClasses.remove( objectClass ); } /** * {@inheritDoc} */ public void setAuxiliaryObjectClasses( List<String> objectClasses ) { this.auxiliaryObjectClasses = objectClasses; } /** * {@inheritDoc} */ public void setForm( TemplateForm form ) { this.form = form; } /** * {@inheritDoc} */ public void setId( String id ) { this.id = id; } /** * Sets the structural object class. * * @param objectClass * the structural object class */ public void setStructuralObjectClass( String objectClass ) { structuralObjectClass = objectClass; } /** * {@inheritDoc} */ public void setTitle( String title ) { this.title = title; } /** * {@inheritDoc} */ public String toString() { return ( title == null ) ? Messages.getString( "AbstractTemplate.UntitledTemplate" ) : title; //$NON-NLS-1$ } }