Coverage Report - org.seasar.uruma.rcp.configuration.ConfigurationWriterFactory
 
Classes in this File Line Coverage Branch Coverage Complexity
ConfigurationWriterFactory
89%
31/35
50%
1/2
0
 
 1  
 /*
 2  
  * Copyright 2004-2008 the Seasar Foundation and the Others.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *     http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
 13  
  * either express or implied. See the License for the specific language
 14  
  * governing permissions and limitations under the License.
 15  
  */
 16  
 package org.seasar.uruma.rcp.configuration;
 17  
 
 18  
 import java.util.HashMap;
 19  
 import java.util.Map;
 20  
 
 21  
 import org.seasar.uruma.core.UrumaMessageCodes;
 22  
 import org.seasar.uruma.exception.NotFoundException;
 23  
 import org.seasar.uruma.rcp.configuration.elements.ActionElement;
 24  
 import org.seasar.uruma.rcp.configuration.elements.ActionSetElement;
 25  
 import org.seasar.uruma.rcp.configuration.elements.ApplicationElement;
 26  
 import org.seasar.uruma.rcp.configuration.elements.CategoryElement;
 27  
 import org.seasar.uruma.rcp.configuration.elements.ClassElement;
 28  
 import org.seasar.uruma.rcp.configuration.elements.CommandElement;
 29  
 import org.seasar.uruma.rcp.configuration.elements.ContextElement;
 30  
 import org.seasar.uruma.rcp.configuration.elements.GroupMarkerElement;
 31  
 import org.seasar.uruma.rcp.configuration.elements.HandlerElement;
 32  
 import org.seasar.uruma.rcp.configuration.elements.InitializerElement;
 33  
 import org.seasar.uruma.rcp.configuration.elements.KeyElement;
 34  
 import org.seasar.uruma.rcp.configuration.elements.MenuCommandElement;
 35  
 import org.seasar.uruma.rcp.configuration.elements.MenuContributionElement;
 36  
 import org.seasar.uruma.rcp.configuration.elements.MenuElement;
 37  
 import org.seasar.uruma.rcp.configuration.elements.ParameterElement;
 38  
 import org.seasar.uruma.rcp.configuration.elements.PerspectiveElement;
 39  
 import org.seasar.uruma.rcp.configuration.elements.RunElement;
 40  
 import org.seasar.uruma.rcp.configuration.elements.SchemeElement;
 41  
 import org.seasar.uruma.rcp.configuration.elements.SeparatorElement;
 42  
 import org.seasar.uruma.rcp.configuration.elements.ToolbarElement;
 43  
 import org.seasar.uruma.rcp.configuration.elements.ViewElement;
 44  
 import org.seasar.uruma.rcp.configuration.writer.GenericConfigurationWriter;
 45  
 import org.seasar.uruma.util.AssertionUtil;
 46  
 
 47  
 /**
 48  
  * {@link ConfigurationWriter} のためのファクトリクラスです。<br />
 49  
  * 
 50  
  * @author y-komori
 51  
  */
 52  0
 public class ConfigurationWriterFactory {
 53  4
     private static final Map<Class<? extends ConfigurationElement>, ConfigurationWriter> writerMap = new HashMap<Class<? extends ConfigurationElement>, ConfigurationWriter>();
 54  
 
 55  
     static {
 56  4
         addWriter(new GenericConfigurationWriter(Extension.class));
 57  
 
 58  4
         addWriter(new GenericConfigurationWriter(ActionElement.class));
 59  4
         addWriter(new GenericConfigurationWriter(ActionSetElement.class));
 60  4
         addWriter(new GenericConfigurationWriter(ApplicationElement.class));
 61  4
         addWriter(new GenericConfigurationWriter(CategoryElement.class));
 62  4
         addWriter(new GenericConfigurationWriter(ClassElement.class));
 63  4
         addWriter(new GenericConfigurationWriter(CommandElement.class));
 64  4
         addWriter(new GenericConfigurationWriter(ContextElement.class));
 65  4
         addWriter(new GenericConfigurationWriter(GroupMarkerElement.class));
 66  4
         addWriter(new GenericConfigurationWriter(HandlerElement.class));
 67  4
         addWriter(new GenericConfigurationWriter(InitializerElement.class));
 68  4
         addWriter(new GenericConfigurationWriter(KeyElement.class));
 69  4
         addWriter(new GenericConfigurationWriter(MenuCommandElement.class));
 70  4
         addWriter(new GenericConfigurationWriter(MenuContributionElement.class));
 71  4
         addWriter(new GenericConfigurationWriter(MenuElement.class));
 72  4
         addWriter(new GenericConfigurationWriter(SeparatorElement.class));
 73  4
         addWriter(new GenericConfigurationWriter(ToolbarElement.class));
 74  4
         addWriter(new GenericConfigurationWriter(ParameterElement.class));
 75  4
         addWriter(new GenericConfigurationWriter(PerspectiveElement.class));
 76  4
         addWriter(new GenericConfigurationWriter(RunElement.class));
 77  4
         addWriter(new GenericConfigurationWriter(SchemeElement.class));
 78  4
         addWriter(new GenericConfigurationWriter(ViewElement.class));
 79  4
     }
 80  
 
 81  
     /**
 82  
      * {@link ConfigurationWriter} を追加します。<br />
 83  
      * 
 84  
      * @param writer
 85  
      *      {@link ConfigurationWriter} オブジェクト
 86  
      */
 87  
     public static final void addWriter(final ConfigurationWriter writer) {
 88  168
         AssertionUtil.assertNotNull("writer", writer);
 89  
 
 90  168
         Class<? extends ConfigurationElement> clazz = writer.getSupportType();
 91  168
         writerMap.put(clazz, writer);
 92  168
     }
 93  
 
 94  
     /**
 95  
      * クラスを指定して {@link ConfigurationWriter} を取得します。<br />
 96  
      * 
 97  
      * @param clazz
 98  
      *      {@link ConfigurationElement} のクラスオブジェクト
 99  
      * @return {@link ConfigurationWriter} オブジェクト
 100  
      * @throws NotFoundException
 101  
      *      {@link ConfigurationWriter} が見つからない場合
 102  
      */
 103  
     public static final ConfigurationWriter getConfigurationWriter(
 104  
             final Class<? extends ConfigurationElement> clazz) {
 105  24
         ConfigurationWriter writer = writerMap.get(clazz);
 106  24
         if (writer != null) {
 107  24
             return writer;
 108  
         } else {
 109  0
             throw new NotFoundException(
 110  
                     UrumaMessageCodes.CONFIGURATION_WRITER_NOT_FOUND, clazz
 111  
                             .getName());
 112  
         }
 113  
     }
 114  
 
 115  
     /**
 116  
      * {@link ConfigurationElement} オブジェクトを指定して {@link ConfigurationWriter}
 117  
      * を取得します。<br />
 118  
      * 
 119  
      * @param element
 120  
      *      {@link ConfigurationElement} オブジェクト
 121  
      * @return {@link ConfigurationWriter} オブジェクト
 122  
      * @throws NotFoundException
 123  
      *      {@link ConfigurationWriter} が見つからない場合
 124  
      */
 125  
     public static final ConfigurationWriter getConfigurationWriter(
 126  
             final ConfigurationElement element) {
 127  0
         AssertionUtil.assertNotNull("element", element);
 128  0
         return getConfigurationWriter(element.getClass());
 129  
     }
 130  
 }