re base code
[sdc.git] / asdctool / src / main / java / org / openecomp / sdc / asdctool / simulator / tenant / OperationalEvnironmentImportHandler.java
1 package org.openecomp.sdc.asdctool.simulator.tenant;
2
3 import com.opencsv.bean.CsvToBeanBuilder;
4 import org.openecomp.sdc.be.dao.cassandra.OperationalEnvironmentDao;
5 import org.openecomp.sdc.be.dao.cassandra.schema.Table;
6 import org.openecomp.sdc.be.resources.data.OperationalEnvironmentEntry;
7 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory;
9 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
10
11 import java.io.FileNotFoundException;
12 import java.io.FileReader;
13 import java.text.ParseException;
14 import java.text.SimpleDateFormat;
15 import java.util.List;
16 import java.util.stream.Collectors;
17
18 /**
19  * Imports CSV file into 
20  * Example of line in the file
21  *              00002,135.42.43.45:5757,Context,FALSE,2017-10-11 12:02:01,INITIAL,personal tenant,abcd123456789,bbbbbbbbbbb
22  *              Date format is fixed: yyyy-MM-dd HH:mm:ss
23  * @author dr2032
24  *
25  */
26 public class OperationalEvnironmentImportHandler {
27         private static final Logger LOGGER = LoggerFactory.getLogger(OperationalEvnironmentImportHandler.class);
28         private static final String TABLE_NAME = Table.SDC_OPERATIONAL_ENVIRONMENT.getTableDescription().getTableName();
29         
30         private OperationalEvnironmentImportHandler() {
31                 
32         }
33         
34         public static void execute(String fileName) {
35                 try {
36                         List<OperationalEnvironment> beans = new CsvToBeanBuilder<OperationalEnvironment>(new FileReader(fileName))
37                                        .withType(OperationalEnvironment.class).build().parse();
38                         
39                         List<OperationalEnvironmentEntry> entries = map(beans);
40                         modifyDb(entries);
41                         LOGGER.info("File {} has been successfully imported  into the [{}] table.", fileName, TABLE_NAME);
42                 } catch (IllegalStateException | FileNotFoundException e) {
43                         String errorMessage = String.format("Failed to import file: %s into the [%s] table ", fileName, TABLE_NAME);
44                         LOGGER.error(errorMessage, e);
45                 }
46         }
47         
48         private static List<OperationalEnvironmentEntry> map(List<OperationalEnvironment> beans) {
49                 return beans.stream()
50                                 .map(OperationalEvnironmentImportHandler::map)
51                                 .collect(Collectors.toList());
52                 
53         }
54         
55         private static OperationalEnvironmentEntry map(OperationalEnvironment perationalEnvironment) {
56                 OperationalEnvironmentEntry entry = new OperationalEnvironmentEntry();
57                 
58                 entry.setEnvironmentId(perationalEnvironment.getEnvironmentId());
59                 entry.addDmaapUebAddress(perationalEnvironment.getDmaapUebAddress());
60                 entry.setEcompWorkloadContext(perationalEnvironment.getEcompWorkloadContext());
61                 entry.setIsProduction(perationalEnvironment.getIsProduction());
62                 
63                 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
64                 try {
65                         entry.setLastModified(formatter.parse(perationalEnvironment.getLastModified()));
66                 } catch (ParseException e) {
67                         LOGGER.error("Faild to pase Date, expected format is [yyyy-MM-dd HH:mm:ss].", e);
68                         throw new RuntimeException(e);
69                 }
70                 
71                 entry.setStatus(perationalEnvironment.getStatus());
72                 entry.setTenant(perationalEnvironment.getTenant());
73                 entry.setUebApikey(perationalEnvironment.getUebApikey());
74                 entry.setUebSecretKey(perationalEnvironment.getUebSecretKey());
75                 
76                 return entry;
77                 
78         }
79         
80         private static OperationalEnvironmentDao createDaoObj() {
81                 AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ImportTableConfig.class);
82                 return (OperationalEnvironmentDao) context.getBean("operational-environment-dao");
83         }
84         
85         private static void modifyDb(List<OperationalEnvironmentEntry> environments) {
86                 OperationalEnvironmentDao daoObj = createDaoObj();
87                 
88                 daoObj.deleteAll();
89                 
90                 environments.forEach(daoObj::save);
91         }
92
93         public static String getTableName() {
94                 return TABLE_NAME;
95         }
96
97
98 }