IO Java
import oracle.jdbc.proxy.annotation.Pre;
import sun.misc.Version;
import javax.naming.ConfigurationException;
import java.io.*;
import java.lang.System;
import java.lang.reflect.Array;
import java.nio.channels.FileChannel;
import java.nio.charset.StandardCharsets;
import org.apache.commons.io.comparator.NameFileComparator;
import java.util.*;
public class MyProperties extends Properties {
Integer versionNo ;
String versionName;
public static void main(String[] args) throws IOException {
MyProperties x= new MyProperties();
}
private static String getLastVersion2(){
String x= "x";
File folder = new File("src/main/resources/db/changelog/");
File[] listOfFiles = folder.listFiles();
Arrays.sort(listOfFiles, new Comparator<File>() {
@Override
public int compare(File o1, File o2) {
int n1 = extractNumber(o1.getName());
int n2 = extractNumber(o2.getName());
return n1 - n2;
}
private int extractNumber(String name) {
int i = 0;
try {
int s = name.indexOf('_')+1;
int e = name.lastIndexOf('.');
String number = name.substring(s, e);
i = Integer.parseInt(number);
} catch(Exception e) {
i = 0; // if filename does not match the format
// then default to 0
}
return i;
}
});
String lastVersion = listOfFiles[listOfFiles.length-1].getName();
int s = lastVersion.indexOf('_')+1;
int e = lastVersion.lastIndexOf('.');
String number = lastVersion.substring(s, e);
return number ;
}
public MyProperties() throws IOException {
FileInputStream in = new FileInputStream("src/main/resources/liquibase.properties");
SortedProperties props = new SortedProperties();
props.load(in);
in.close();
String finalVersionName = "src/main/resources/db/changelog/db.changelog.finalVersion.xml";
String lastVersionName="src/main/resources/db/changelog/db.changelog.rel_" + (Integer.valueOf(getLastVersion2())+1)+ ".xml";
File finalFile = new File(finalVersionName);
File lastFile = new File(lastVersionName);
if (finalFile.length() != 0) {
lastFile.createNewFile();
//versionName="src/main/resources/db/changelog/db.changelog.rel_" + (Integer.valueOf(getLastVersion2())+1) + ".xml";
//File newFile = new File(versionName);
//newFile.createNewFile();
//Integer newVersionNo= (Integer.valueOf(getLastVersion2())+1);
//versionName= "src/main/resources/db/changelog/db.changelog.rel_" +newVersionNo + ".xml";
// props.remove("outputChangeLogFile");
// props.remove("versionNo");
// props.setProperty("versionNo", String.valueOf(Integer.valueOf(getLastVersion2())+2));
// props.setProperty("outputChangeLogFile", lastVersionName);
String createFileName = "src/main/resources/db/changelog/db.changelog.rel_" + (Integer.valueOf(getLastVersion2())+1) + ".xml";
FileChannel src = new FileInputStream(finalFile).getChannel();
FileChannel dest = new FileOutputStream(lastFile).getChannel();
dest.transferFrom(src, 0, src.size());
finalFile.deleteOnExit();
}
//finalFile.renameTo(lastFile);
finalFile.delete();
// String newVersionName="src/main/resources/db/changelog/db.changelog.rel_" + (Integer.valueOf(getLastVersion2())+1) + ".xml";
// String currVersionName="src/main/resources/db/changelog/db.changelog.rel_" + (Integer.valueOf(getLastVersion2())) + ".xml";
// String preVersionName="src/main/resources/db/changelog/db.changelog.rel_" + (Integer.valueOf(getLastVersion2())-1) + ".xml";
// File newFile = new File(newVersionName);
// File currFile = new File(currVersionName);
// File preFile = new File(preVersionName);
// newFile.createNewFile();
//
// if(newFile.length() == 0 && currFile.length()==0){
// newFile.delete();
// versionNo= (Integer.valueOf(getLastVersion2())+1);
// versionName= newVersionName;
// props.remove("outputChangeLogFile");
// props.remove("versionNo");
// props.setProperty("versionNo", versionNo.toString());
// props.setProperty("outputChangeLogFile", versionName);
// }
// else if (newFile.length() == 0 && currFile.length()!=0){
// versionNo= (Integer.valueOf(getLastVersion2())+1);
// versionName= "src/main/resources/db/changelog/db.changelog.rel_" + (Integer.valueOf(getLastVersion2())+1) + ".xml";;
// props.remove("outputChangeLogFile");
// props.remove("versionNo");
// props.setProperty("versionNo", versionNo.toString());
// props.setProperty("outputChangeLogFile", versionName);
// }
// versionName="src/main/resources/db/changelog/db.changelog.rel_" + (Integer.valueOf(getLastVersion2())+1) + ".xml";
// File newFile = new File(versionName);
// newFile.createNewFile();
// Integer newVersionNo= (Integer.valueOf(getLastVersion2())+1);
// versionName= "src/main/resources/db/changelog/db.changelog.rel_" +newVersionNo + ".xml";
// props.remove("outputChangeLogFile");
// props.remove("versionNo");
// props.setProperty("versionNo", newVersionNo.toString());
// props.setProperty("outputChangeLogFile", versionName);
// File preFile = new File("src/main/resources/db/changelog/db.changelog.rel_" + (Integer.valueOf(getLastVersion2())-1) + ".xml");
// if(preFile.length() == 0){
// newFile.delete();
// Integer newVersionNo2= (Integer.valueOf(getLastVersion2()));
// versionName= "src/main/resources/db/changelog/db.changelog.rel_" +newVersionNo2 + ".xml";
// props.remove("outputChangeLogFile");
// props.remove("versionNo");
// props.setProperty("versionNo", newVersionNo2.toString());
// props.setProperty("outputChangeLogFile", versionName);
// }
//
// String check = "src/main/resources/db/changelog/db.changelog.rel_" + (Integer.valueOf(getLastVersion2())) + ".xml";
// File checkFile = new File(check);
// if (checkFile.length() == 0){
// props.remove("outputChangeLogFile");
// props.remove("versionNo");
// props.setProperty("versionNo", (Integer.valueOf(getLastVersion2())).toString());
// props.setProperty("outputChangeLogFile", versionName);
// }
// versionName="src/main/resources/db/changelog/db.changelog.rel_" + getLastVersion2() + ".xml";
// File file = new File(versionName);
// if (file.length() != 0){
// Integer newVersionNo = Integer.valueOf(getLastVersion2()) + 1;
// versionName = "src/main/resources/db/changelog/db.changelog.rel_" + newVersionNo + ".xml";
// File newFile = new File(versionName);
// newFile.createNewFile();
// props.remove("outputChangeLogFile");
// props.remove("versionNo");
// props.setProperty("versionNo", newVersionNo.toString());
// props.setProperty("outputChangeLogFile", versionName);
// }
// if (Integer.valueOf(getLastVersion2()) == Integer.valueOf(props.getProperty("versionNo")) -1){
// Integer newVersionNo = Integer.valueOf(props.getProperty("versionNo")) + 1;
// versionName = "src/main/resources/db/changelog/db.changelog.rel_" + newVersionNo + ".xml";
// File newFile = new File(versionName);
// newFile.createNewFile();
// props.remove("outputChangeLogFile");
// props.remove("versionNo");
// props.setProperty("versionNo", newVersionNo.toString());
// props.setProperty("outputChangeLogFile", versionName);
// }
// versionName="src/main/resources/db/changelog/db.changelog.rel_" + getLastVersion2() + ".xml";
// File file = new File(versionName);
// if (file.length() != 0){
// Integer newVersionNo = Integer.valueOf(getLastVersion2()) + 2;
// versionName = "src/main/resources/db/changelog/db.changelog.rel_" + newVersionNo + ".xml";
// File newFile = new File(versionName);
// newFile.createNewFile();
//
// props.remove("outputChangeLogFile");
// props.remove("versionNo");
// props.setProperty("versionNo", newVersionNo.toString());
// props.setProperty("outputChangeLogFile", versionName);
// props.setProperty("zzzfilenameversion", getLastVersion2());
// props.setProperty("versionNoTest", String.valueOf(newVersionNo+1));
// }else if((file.length() != 0) || (Integer.valueOf(getLastVersion2()) == Integer.valueOf(props.getProperty("versionNo"))-1 )){
// Integer version =Integer.valueOf( getLastVersion2() )+1;
// versionName = "src/main/resources/db/changelog/db.changelog.rel_" + version + ".xml";
// props.remove("outputChangeLogFile");
// props.remove("versionNo");
// props.setProperty("versionNo", version.toString());
// props.setProperty("outputChangeLogFile", versionName);
// props.setProperty("zzzfilenameversion", getLastVersion2());
// }
// versionName = "src/main/resources/db/changelog/db.changelog.rel_" + (props.getProperty("versionNo") + 1) + ".xml";
// File newFile = new File(versionName);
// newFile.createNewFile();
// versionName="src/main/resources/db/changelog/db.changelog.rel_" + getLastVersion2() + ".xml";
// File file = new File(versionName);
// Integer newVersionNo = Integer.valueOf(props.getProperty("versionNo")) + 1;
// if (file.length() != 0 || (Integer.valueOf(getLastVersion2()) == newVersionNo-2) ){
// versionName = "src/main/resources/db/changelog/db.changelog.rel_" + newVersionNo + ".xml";
//
// File newFile = new File(versionName);
// if (!file.exists()){
// file.createNewFile();
// }
// props.remove("outputChangeLogFile");
// props.remove("versionNo");
// props.setProperty("versionNo", newVersionNo.toString());
// props.setProperty("outputChangeLogFile", versionName);
// props.setProperty("zzzfilenameversion", getLastVersion2());
// }else{
// FileWriter filecreate =new FileWriter("src/main/resources/db/changelog/db.changelog.rel_" + (Integer.valueOf(props.getProperty("versionNo")) -1) + ".xml");
// }
// try {
// versionNo = Integer.valueOf(props.getProperty("versionNo"));
// //File currFile = new File(props.getProperty("outputChangeLogFile"));
// File file = new File( versionName="src/main/resources/db/changelog/db.changelog.rel_" + (versionNo -1) + ".xml");
// if (file.isFile()) {
// if (file.length() != 0) {
//
// // if ( file.exists() && !file.isDirectory()) {
// //versionName = "src/main/resources/db/changelog/db.changelog.rel_" + versionNo + ".xml";
// // props.remove("outputChangeLogFile");
// // props.remove("versionNo");
// // props.setProperty("versionNo", versionNo.toString());
// // props.setProperty("outputChangeLogFile", versionName);
//
// Integer newVersionNo = Integer.valueOf(getLastVersion2()) + 1;
// versionName = "src/main/resources/db/changelog/db.changelog.rel_" + newVersionNo + ".xml";
// props.remove("outputChangeLogFile");
// props.remove("versionNo");
// props.setProperty("versionNo", newVersionNo.toString());
// props.setProperty("outputChangeLogFile", versionName);
// props.setProperty("zzzfilenameversion", getLastVersion2());
// //props.setProperty("zzzfilenameversion3", getLastVersion3());
//
// } else {
//
// }
// }else if (versionName == getLastVersion2() ) {
// Integer newVersionNo = Integer.valueOf(getLastVersion2()) + 1;
// versionName = "src/main/resources/db/changelog/db.changelog.rel_" + newVersionNo + ".xml";
// props.remove("outputChangeLogFile");
// props.remove("versionNo");
// props.setProperty("versionNo", newVersionNo.toString());
// props.setProperty("outputChangeLogFile", versionName);
// props.setProperty("zzzfilenameversion", getLastVersion2());
// }
//
// // Integer preVersionNo = versionNo -1;
// // versionName = "src/main/resources/db/changelog/db.changelog.rel_" + preVersionNo + ".xml";
// // props.remove("outputChangeLogFile");
// // props.remove("versionNo");
// // props.setProperty("versionNo", preVersionNo.toString());
// // props.setProperty("outputChangeLogFile", versionName);
//
// }catch(Exception e){
// e.getMessage();
// }
// finalFile.deleteOnExit();
FileOutputStream out = new FileOutputStream("src/main/resources/liquibase.properties");
props.store(out, null);
out.close();
}
}
class SortedProperties extends Properties {
public Enumeration keys() {
Enumeration keysEnum = super.keys();
Vector<String> keyList = new Vector<String>();
while (keysEnum.hasMoreElements()) {
keyList.add((String) keysEnum.nextElement());
}
Collections.sort(keyList);
return keyList.elements();
}
}