[SDC-29] rebase continue work to align source
[sdc.git] / asdctool / src / main / java / org / openecomp / sdc / asdctool / main / SdcSchemaFileImport.java
1 package org.openecomp.sdc.asdctool.main;
2
3 import java.io.File;
4 import java.nio.file.Files;
5 import java.nio.file.Path;
6 import java.nio.file.Paths;
7 import java.util.Date;
8
9 import org.apache.commons.codec.digest.DigestUtils;
10 import org.openecomp.sdc.asdctool.impl.EsToCassandraDataMigrationConfig;
11 import org.openecomp.sdc.be.config.ConfigurationManager;
12 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
13 import org.openecomp.sdc.be.dao.cassandra.SdcSchemaFilesCassandraDao;
14 import org.openecomp.sdc.be.resources.data.SdcSchemaFilesData;
15 import org.openecomp.sdc.common.api.ConfigurationSource;
16 import org.openecomp.sdc.common.impl.ExternalConfiguration;
17 import org.openecomp.sdc.common.impl.FSConfigurationSource;
18 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
19
20
21 public class SdcSchemaFileImport {
22         
23         private static SdcSchemaFilesCassandraDao schemaFilesCassandraDao;
24         
25         public static void main(String[] args) throws Exception {
26                 
27                 final String FILE_NAME = "SDC.zip";
28                 
29                 if (args == null || args.length < 4) {
30                         usageAndExit();
31                 }
32                 
33                 String pathAndFile = args[0];
34                 String sdcReleaseNum = args[1];
35                 String conformanceLevel = args[2];
36                 String appConfigDir = args[3];
37                 
38                 File file = new File(pathAndFile);
39                 if(!file.exists()){
40                         System.out.println("The file or path does not exist");
41                         System.exit(1);
42                 } else if(!file.isFile()){
43                         System.out.println("Specify the file name");
44                         System.exit(1);
45                 }
46
47                 AnnotationConfigApplicationContext context = initContext(appConfigDir);
48                 schemaFilesCassandraDao = (SdcSchemaFilesCassandraDao) context.getBean("sdc-schema-files-cassandra-dao");
49                 
50                 Path path = Paths.get(pathAndFile);
51                 byte[] fileBytes = Files.readAllBytes(path);
52                 
53                 Date date = new Date();
54                 String md5Hex = DigestUtils.md5Hex(fileBytes);
55                 
56                 SdcSchemaFilesData schemeFileData = new SdcSchemaFilesData(sdcReleaseNum, date, conformanceLevel, FILE_NAME, fileBytes, md5Hex);
57                 CassandraOperationStatus saveSchemaFile = schemaFilesCassandraDao.saveSchemaFile(schemeFileData);
58                 
59                 if(!saveSchemaFile.equals(CassandraOperationStatus.OK)){
60                         System.out.println("SdcSchemaFileImport failed cassandra error" + saveSchemaFile);
61                         System.exit(1);
62                 }
63                 
64                 System.out.println("SdcSchemaFileImport successfully completed");
65                 
66                 System.exit(0);
67         }
68         
69         private static void usageAndExit(){
70                 SdcSchemaFileImportUsage();
71                 System.exit(1);
72         }
73         
74         private static void SdcSchemaFileImportUsage(){
75                 System.out.println("Usage: <file dir/filename> <SDC release number> <Schema conformance level> <configuration dir>");
76         }
77         
78         private static AnnotationConfigApplicationContext initContext(String appConfigDir) {
79                 ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), appConfigDir);
80                 ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
81                 AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(EsToCassandraDataMigrationConfig.class);
82                 return context;
83         }
84 }