re base code
[sdc.git] / catalog-dao / src / main / java / org / openecomp / sdc / be / resources / impl / ResourceUploader.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.sdc.be.resources.impl;
22
23 import fj.data.Either;
24 import org.openecomp.sdc.be.config.BeEcompErrorManager;
25 import org.openecomp.sdc.be.config.ConfigurationManager;
26 import org.openecomp.sdc.be.dao.api.ICatalogDAO;
27 import org.openecomp.sdc.be.dao.api.ResourceUploadStatus;
28 import org.openecomp.sdc.be.resources.api.IResourceUploader;
29 import org.openecomp.sdc.be.resources.data.ESArtifactData;
30 import org.openecomp.sdc.be.resources.exception.ResourceDAOException;
31 import org.openecomp.sdc.common.log.wrappers.Logger;
32 import org.springframework.stereotype.Component;
33
34 import javax.annotation.PostConstruct;
35 import javax.annotation.Resource;
36
37 @Component("resource-upload")
38 public class ResourceUploader implements IResourceUploader {
39
40         private static final String DEFAULT_ARTIFACT_INDEX_NAME = "resources";
41
42         @Resource
43         private ICatalogDAO resourceDAO;
44         private static Logger log = Logger.getLogger(ResourceUploader.class.getName());
45
46         @PostConstruct
47         public void init() {
48                 ConfigurationManager configMgr = ConfigurationManager.getConfigurationManager();
49                 String artifactsIndex = null;
50                 artifactsIndex = configMgr.getConfiguration().getArtifactsIndex();
51                 if (artifactsIndex == null || artifactsIndex.isEmpty()) {
52                         artifactsIndex = DEFAULT_ARTIFACT_INDEX_NAME;
53                 }
54                 resourceDAO.addToIndicesMap(ESArtifactData.class.getSimpleName().toLowerCase(), artifactsIndex);
55         }
56
57         public ResourceUploader() {
58                 super();
59         }
60
61         public ResourceUploader(ICatalogDAO resourcetDAO) {
62                 super();
63                 this.resourceDAO = resourcetDAO;
64         }
65
66         public ICatalogDAO getResourceDAO() {
67                 return resourceDAO;
68         }
69
70         public void setResourceDAO(ICatalogDAO resourceDAO) {
71                 this.resourceDAO = resourceDAO;
72         }
73
74         @Override
75         public ResourceUploadStatus saveArtifact(ESArtifactData artifactData, boolean isReload) {
76                 ResourceUploadStatus status = ResourceUploadStatus.OK;
77                 if (resourceDAO == null) {
78                         BeEcompErrorManager.getInstance()
79                                         .logBeInitializationError("Save Artifact - internal object not initialized");
80                         log.debug("update artifact failed - resourceDAO is null");
81                         return ResourceUploadStatus.ERROR;
82                 }
83
84                 Either<ESArtifactData, ResourceUploadStatus> getArtifactStatus = getArtifact(artifactData.getId());
85                 if (getArtifactStatus.isLeft()) {
86                         status = ResourceUploadStatus.ALREADY_EXIST;
87                         log.debug("ResourceUploadStatus:saveArtifact artifact with id {} already exist.", artifactData.getId());
88                         if (isReload) {
89                                 status = updateArtifact(artifactData, getArtifactStatus.left().value());
90                         }
91                 } else {
92                         try {
93
94                                 resourceDAO.writeArtifact(artifactData);
95                                 status = ResourceUploadStatus.OK;
96
97                         } catch (ResourceDAOException e) {
98                                 status = ResourceUploadStatus.ERROR;
99                                 BeEcompErrorManager.getInstance().logBeDaoSystemError("Save Artifact to database");
100                                 log.debug("ResourceUploadStatus:saveArtifact failed with exception ", e);
101                         }
102
103                 }
104
105                 return status;
106         }
107
108         @Override
109         public ResourceUploadStatus updateArtifact(ESArtifactData artifactUpdateData) {
110                 ResourceUploadStatus status = ResourceUploadStatus.OK;
111                 if (resourceDAO == null)
112                         return ResourceUploadStatus.ERROR;
113
114                 Either<ESArtifactData, ResourceUploadStatus> getArtifactStatus = getArtifact(artifactUpdateData.getId());
115                 if (getArtifactStatus.isRight()) {
116                         status = getArtifactStatus.right().value();
117                         log.debug("ResourceUploadStatus:updateArtifactt artifact with id {}", artifactUpdateData.getId()
118                                         + " not exist.");
119                 }
120                 if (getArtifactStatus.isLeft()) {
121                         status = updateArtifact(artifactUpdateData, getArtifactStatus.left().value());
122                 }
123
124                 return status;
125         }
126
127         /*
128          * @Override public ResourceUploadStatus
129          * updateServiceArtifact(ServiceArtifactData artifactUpdateData) {
130          * ResourceUploadStatus status = ResourceUploadStatus.OK; if(resourceDAO ==
131          * null) return ResourceUploadStatus.ERROR; Either<ServiceArtifactData,
132          * ResourceUploadStatus> getServiceArtifactStatus =
133          * getServiceArtifact(artifactUpdateData.getId());
134          * 
135          * if(getServiceArtifactStatus.isRight()){
136          * log.debug("ResourceUploadStatus:updateArtifactt artifact with id " +
137          * artifactUpdateData.getId() + " not exist."); status =
138          * getServiceArtifactStatus.right().value(); }
139          * if(getServiceArtifactStatus.isLeft()){ status =
140          * updateServiceArtifact(artifactUpdateData,
141          * getServiceArtifactStatus.left().value()); }
142          * 
143          * return status; }
144          * 
145          */
146
147         @Override
148         public Either<ESArtifactData, ResourceUploadStatus> getArtifact(String id) {
149                 if (resourceDAO == null)
150                         return Either.right(ResourceUploadStatus.ERROR);
151
152                 return resourceDAO.getArtifact(id);
153         }
154
155         /*
156          * @Override public Either<ServiceArtifactData, ResourceUploadStatus>
157          * getServiceArtifact(String id) { if(resourceDAO == null) return
158          * Either.right(ResourceUploadStatus.ERROR);
159          * 
160          * return resourceDAO.getServiceArtifact(id); }
161          */
162         @Override
163         public void deleteArtifact(String id) {
164                 if (resourceDAO != null) {
165                         resourceDAO.deleteArtifact(id);
166                 }
167
168         }
169
170         private ResourceUploadStatus updateArtifact(ESArtifactData artifactUpdateData, ESArtifactData existData) {
171                 ResourceUploadStatus status;
172
173                 updateData(artifactUpdateData, existData);
174
175                 try {
176                         resourceDAO.writeArtifact(artifactUpdateData);
177                         status = ResourceUploadStatus.OK;
178
179                 } catch (ResourceDAOException e) {
180                         status = ResourceUploadStatus.ERROR;
181                         log.debug("ResourceUploadStatus:updateArtifact failed with exception ", e);
182                 }
183                 return status;
184         }
185
186         private void updateData(ESArtifactData artifactUpdateData, ESArtifactData existData) {
187
188                 if (artifactUpdateData.getData() == null) {
189                         artifactUpdateData.setData(existData.getData());
190                 }
191
192         }
193
194         @Override
195         public void deleteAllArtifacts() {
196                 resourceDAO.deleteAllArtifacts();
197         }
198
199 }