001/*
002 * (C) Copyright 2006-2010 Nuxeo SA (http://nuxeo.com/) and others.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *     http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 *
016 * Contributors:
017 *     Thierry Delprat
018 */
019package org.nuxeo.apidoc.adapters;
020
021import org.nuxeo.apidoc.api.BundleGroup;
022import org.nuxeo.apidoc.api.BundleInfo;
023import org.nuxeo.apidoc.api.ComponentInfo;
024import org.nuxeo.apidoc.api.DocumentationItem;
025import org.nuxeo.apidoc.api.ExtensionInfo;
026import org.nuxeo.apidoc.api.ExtensionPointInfo;
027import org.nuxeo.apidoc.api.NuxeoArtifact;
028import org.nuxeo.apidoc.api.OperationInfo;
029import org.nuxeo.apidoc.api.SeamComponentInfo;
030import org.nuxeo.apidoc.api.ServiceInfo;
031import org.nuxeo.apidoc.documentation.DocumentationItemDocAdapter;
032import org.nuxeo.apidoc.repository.RepositoryDistributionSnapshot;
033import org.nuxeo.apidoc.snapshot.DistributionSnapshot;
034import org.nuxeo.ecm.core.api.DocumentModel;
035import org.nuxeo.ecm.core.api.adapter.DocumentAdapterFactory;
036
037/**
038 * Factory for DocumentModel adapters.
039 */
040public class AdapterFactory implements DocumentAdapterFactory {
041
042    @Override
043    public Object getAdapter(DocumentModel doc, Class<?> adapterClass) {
044
045        if (doc == null) {
046            return null;
047        }
048
049        String adapterClassName = adapterClass.getSimpleName();
050
051        if (adapterClassName.equals(BundleGroup.class.getSimpleName())) {
052            if (doc.getType().equals(BundleGroup.TYPE_NAME)) {
053                return new BundleGroupDocAdapter(doc);
054            }
055        }
056
057        if (adapterClassName.equals(BundleInfo.class.getSimpleName())) {
058            if (doc.getType().equals(BundleInfo.TYPE_NAME)) {
059                return new BundleInfoDocAdapter(doc);
060            }
061        }
062
063        if (adapterClassName.equals(ComponentInfo.class.getSimpleName())) {
064            if (doc.getType().equals(ComponentInfo.TYPE_NAME)) {
065                return new ComponentInfoDocAdapter(doc);
066            }
067        }
068
069        if (adapterClassName.equals(ExtensionPointInfo.class.getSimpleName())) {
070            if (doc.getType().equals(ExtensionPointInfo.TYPE_NAME)) {
071                return new ExtensionPointInfoDocAdapter(doc);
072            }
073        }
074
075        if (adapterClassName.equals(ExtensionInfo.class.getSimpleName())) {
076            if (doc.getType().equals(ExtensionInfo.TYPE_NAME)) {
077                return new ExtensionInfoDocAdapter(doc);
078            }
079        }
080
081        if (adapterClassName.equals(DistributionSnapshot.class.getSimpleName())) {
082            if (doc.getType().equals(DistributionSnapshot.TYPE_NAME)) {
083                return new RepositoryDistributionSnapshot(doc);
084            }
085        }
086
087        if (adapterClassName.equals(DocumentationItem.class.getSimpleName())) {
088            if (doc.getType().equals(DocumentationItem.TYPE_NAME)) {
089                return new DocumentationItemDocAdapter(doc);
090            }
091        }
092
093        if (adapterClassName.equals(ServiceInfo.class.getSimpleName())) {
094            if (doc.getType().equals(ServiceInfo.TYPE_NAME)) {
095                return new ServiceInfoDocAdapter(doc);
096            }
097        }
098
099        if (adapterClassName.equals(SeamComponentInfo.class.getSimpleName())) {
100            if (doc.getType().equals(SeamComponentInfo.TYPE_NAME)) {
101                return new SeamComponentInfoDocAdapter(doc);
102            }
103        }
104
105        if (adapterClassName.equals(OperationInfo.class.getSimpleName())) {
106            if (doc.getType().equals(OperationInfo.TYPE_NAME)) {
107                return new OperationInfoDocAdapter(doc);
108            }
109        }
110
111        if (adapterClassName.equals(NuxeoArtifact.class.getSimpleName())) {
112            if (doc.getType().equals(ServiceInfo.TYPE_NAME)) {
113                return new ServiceInfoDocAdapter(doc);
114            }
115            if (doc.getType().equals(ExtensionInfo.TYPE_NAME)) {
116                return new ExtensionInfoDocAdapter(doc);
117            }
118            if (doc.getType().equals(ExtensionPointInfo.TYPE_NAME)) {
119                return new ExtensionPointInfoDocAdapter(doc);
120            }
121            if (doc.getType().equals(ComponentInfo.TYPE_NAME)) {
122                return new ComponentInfoDocAdapter(doc);
123            }
124            if (doc.getType().equals(BundleInfo.TYPE_NAME)) {
125                return new BundleInfoDocAdapter(doc);
126            }
127            if (doc.getType().equals(BundleGroup.TYPE_NAME)) {
128                return new BundleGroupDocAdapter(doc);
129            }
130            if (doc.getType().equals(SeamComponentInfo.TYPE_NAME)) {
131                return new SeamComponentInfoDocAdapter(doc);
132            }
133            if (doc.getType().equals(OperationInfo.TYPE_NAME)) {
134                return new OperationInfoDocAdapter(doc);
135            }
136        }
137
138        return null;
139    }
140
141}