1 /*
2  * JasperReports - Free Java Reporting Library.
3  * Copyright (C) 2001 - 2019 TIBCO Software Inc. All rights reserved.
4  * http://www.jaspersoft.com
5  *
6  * Unless you have purchased a commercial license agreement from Jaspersoft,
7  * the following license terms apply:
8  *
9  * This program is part of JasperReports.
10  *
11  * JasperReports is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License as published by
13  * the Free Software Foundation, either version 3 of the License, or
14  * (at your option) any later version.
15  *
16  * JasperReports is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Lesser General Public License for more details.
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * along with JasperReports. If not, see <http://www.gnu.org/licenses/>.
23  */

24 package net.sf.jasperreports.repo;
25
26 import net.sf.jasperreports.engine.JasperReportsContext;
27
28
29 /**
30  * @author Teodor Danciu (teodord@users.sourceforge.net)
31  */

32 public class DefaultRepositoryPersistenceServiceFactory implements PersistenceServiceFactory
33 {
34     private static final DefaultRepositoryPersistenceServiceFactory INSTANCE = new DefaultRepositoryPersistenceServiceFactory();
35     
36     /**
37      * 
38      */

39     public static DefaultRepositoryPersistenceServiceFactory getInstance()
40     {
41         return INSTANCE;
42     }
43     
44     @Override
45     public <K extends RepositoryService, L extends Resource> PersistenceService getPersistenceService(
46         JasperReportsContext jasperReportsContext,
47         Class<K> repositoryServiceType, 
48         Class<L> resourceType
49         ) 
50     {
51         if (DefaultRepositoryService.class.getName().equals(repositoryServiceType.getName()))
52         {
53             if (InputStreamResource.class.getName().equals(resourceType.getName()))
54             {
55                 return new InputStreamPersistenceService();
56             }
57             else if (OutputStreamResource.class.getName().equals(resourceType.getName()))
58             {
59                 return new OutputStreamPersistenceService();
60             }
61             else if (ReportResource.class.getName().equals(resourceType.getName()))
62             {
63                 return new SerializedReportPersistenceService();
64             }
65             else if (ResourceBundleResource.class.getName().equals(resourceType.getName()))
66             {
67                 return new ResourceBundlePersistenceService(jasperReportsContext);
68             }
69             else if (DataAdapterResource.class.isAssignableFrom(resourceType))
70             {
71                 return new CastorDataAdapterPersistenceService(jasperReportsContext);
72             }
73             else if (CastorResource.class.isAssignableFrom(resourceType))
74             {
75                 return new CastorObjectPersistenceService(jasperReportsContext);
76             }
77             else if (SerializableResource.class.isAssignableFrom(resourceType))
78             {
79                 return new SerializedObjectPersistenceService();
80             }
81         }
82         return null;
83     }
84 }
85