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}