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