001/* 002 * (C) Copyright 2006-2010 Nuxeo SA (http://nuxeo.com/) and contributors. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the GNU Lesser General Public License 006 * (LGPL) version 2.1 which accompanies this distribution, and is available at 007 * http://www.gnu.org/licenses/lgpl.html 008 * 009 * This library is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 012 * Lesser General Public License for more details. 013 * 014 * Contributors: 015 * Thierry Delprat 016 */ 017package org.nuxeo.apidoc.adapters; 018 019import org.nuxeo.apidoc.api.BundleGroup; 020import org.nuxeo.apidoc.api.BundleInfo; 021import org.nuxeo.apidoc.api.ComponentInfo; 022import org.nuxeo.apidoc.api.DocumentationItem; 023import org.nuxeo.apidoc.api.ExtensionInfo; 024import org.nuxeo.apidoc.api.ExtensionPointInfo; 025import org.nuxeo.apidoc.api.NuxeoArtifact; 026import org.nuxeo.apidoc.api.OperationInfo; 027import org.nuxeo.apidoc.api.SeamComponentInfo; 028import org.nuxeo.apidoc.api.ServiceInfo; 029import org.nuxeo.apidoc.documentation.DocumentationItemDocAdapter; 030import org.nuxeo.apidoc.repository.RepositoryDistributionSnapshot; 031import org.nuxeo.apidoc.snapshot.DistributionSnapshot; 032import org.nuxeo.ecm.core.api.DocumentModel; 033import org.nuxeo.ecm.core.api.adapter.DocumentAdapterFactory; 034 035/** 036 * Factory for DocumentModel adapters. 037 */ 038public class AdapterFactory implements DocumentAdapterFactory { 039 040 @Override 041 public Object getAdapter(DocumentModel doc, Class<?> adapterClass) { 042 043 if (doc == null) { 044 return null; 045 } 046 047 String adapterClassName = adapterClass.getSimpleName(); 048 049 if (adapterClassName.equals(BundleGroup.class.getSimpleName())) { 050 if (doc.getType().equals(BundleGroup.TYPE_NAME)) { 051 return new BundleGroupDocAdapter(doc); 052 } 053 } 054 055 if (adapterClassName.equals(BundleInfo.class.getSimpleName())) { 056 if (doc.getType().equals(BundleInfo.TYPE_NAME)) { 057 return new BundleInfoDocAdapter(doc); 058 } 059 } 060 061 if (adapterClassName.equals(ComponentInfo.class.getSimpleName())) { 062 if (doc.getType().equals(ComponentInfo.TYPE_NAME)) { 063 return new ComponentInfoDocAdapter(doc); 064 } 065 } 066 067 if (adapterClassName.equals(ExtensionPointInfo.class.getSimpleName())) { 068 if (doc.getType().equals(ExtensionPointInfo.TYPE_NAME)) { 069 return new ExtensionPointInfoDocAdapter(doc); 070 } 071 } 072 073 if (adapterClassName.equals(ExtensionInfo.class.getSimpleName())) { 074 if (doc.getType().equals(ExtensionInfo.TYPE_NAME)) { 075 return new ExtensionInfoDocAdapter(doc); 076 } 077 } 078 079 if (adapterClassName.equals(DistributionSnapshot.class.getSimpleName())) { 080 if (doc.getType().equals(DistributionSnapshot.TYPE_NAME)) { 081 return new RepositoryDistributionSnapshot(doc); 082 } 083 } 084 085 if (adapterClassName.equals(DocumentationItem.class.getSimpleName())) { 086 if (doc.getType().equals(DocumentationItem.TYPE_NAME)) { 087 return new DocumentationItemDocAdapter(doc); 088 } 089 } 090 091 if (adapterClassName.equals(ServiceInfo.class.getSimpleName())) { 092 if (doc.getType().equals(ServiceInfo.TYPE_NAME)) { 093 return new ServiceInfoDocAdapter(doc); 094 } 095 } 096 097 if (adapterClassName.equals(SeamComponentInfo.class.getSimpleName())) { 098 if (doc.getType().equals(SeamComponentInfo.TYPE_NAME)) { 099 return new SeamComponentInfoDocAdapter(doc); 100 } 101 } 102 103 if (adapterClassName.equals(OperationInfo.class.getSimpleName())) { 104 if (doc.getType().equals(OperationInfo.TYPE_NAME)) { 105 return new OperationInfoDocAdapter(doc); 106 } 107 } 108 109 if (adapterClassName.equals(NuxeoArtifact.class.getSimpleName())) { 110 if (doc.getType().equals(ServiceInfo.TYPE_NAME)) { 111 return new ServiceInfoDocAdapter(doc); 112 } 113 if (doc.getType().equals(ExtensionInfo.TYPE_NAME)) { 114 return new ExtensionInfoDocAdapter(doc); 115 } 116 if (doc.getType().equals(ExtensionPointInfo.TYPE_NAME)) { 117 return new ExtensionPointInfoDocAdapter(doc); 118 } 119 if (doc.getType().equals(ComponentInfo.TYPE_NAME)) { 120 return new ComponentInfoDocAdapter(doc); 121 } 122 if (doc.getType().equals(BundleInfo.TYPE_NAME)) { 123 return new BundleInfoDocAdapter(doc); 124 } 125 if (doc.getType().equals(BundleGroup.TYPE_NAME)) { 126 return new BundleGroupDocAdapter(doc); 127 } 128 if (doc.getType().equals(SeamComponentInfo.TYPE_NAME)) { 129 return new SeamComponentInfoDocAdapter(doc); 130 } 131 if (doc.getType().equals(OperationInfo.TYPE_NAME)) { 132 return new OperationInfoDocAdapter(doc); 133 } 134 } 135 136 return null; 137 } 138 139}