package com.jware.util;


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

/**
 * @author ジン　ショウコウ
 *
 * TODO To change the template for this generated type comment go to
 * このプログラムはStrutsアプリケーションのApplicationResourcesの多言語ファイルを同期化するためのツールです.
	args[0]：参照されるファイル="Aファイル"
	args[1]：同期化させたいファイル="Bファイル"
	args[2]：同期化後の内容を出力するファイル="Cファイル"
	Aファイルの要素とBファイルの要素を比較します。
	要素が既に存在した場合、そのままCファイルに出力します。
	要素が存在しなかった場合、その要素を追加してCファイルに出力します。
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class ResourceSynchronizer {

	public static void main(String[] args) {
		
		int length = args.length ;
		if(length>=2){
			
		
			ArrayList arrayList = new ArrayList();

			try {
				BufferedReader bufferedReader1 = new BufferedReader(new FileReader (args[0]));
	
		      	String[] key;
			      String select = null;
							
			      String str ;
			      while ((str = bufferedReader1.readLine()) != null) {
	
			      	ResourceSynchronizerBean resourceSynchronizerBean=new ResourceSynchronizerBean();
			      	str.trim();
	              	key = str.split("=");
	              	if(!str.equals("")){
	              		
	              	    select =  str.substring(0,1);
	                  	if(!select.equals("#")){              	              	
	              	
	                  		resourceSynchronizerBean.setKey(key[0]);
	                  		resourceSynchronizerBean.setValue(str);
	                  		resourceSynchronizerBean.setDistinctionFlg(true);
					      	
		              	} else {
		              		
		              		resourceSynchronizerBean.setKey("#");
		              		resourceSynchronizerBean.setValue(str);
		              		resourceSynchronizerBean.setDistinctionFlg(false);
		              		
		              	}
	                  	
	            	} else {
	            		
	            		resourceSynchronizerBean.setKey("");
	            		resourceSynchronizerBean.setValue(str);
	            		resourceSynchronizerBean.setDistinctionFlg(false);
	              		
	              	}
			      	arrayList.add(resourceSynchronizerBean);
			    }
				bufferedReader1.close();
			} catch(FileNotFoundException e){
				System.out.println("指定されたファイルが見つかりません："+args[0]);
	
			}catch (IOException e) {
				System.out.println("ファイル読み込みエラー："+args[0]);
			}catch(ArrayIndexOutOfBoundsException e){
				e.printStackTrace();
			}

			try{
			    ArrayList arrayList2 = new ArrayList();
				BufferedReader bufferedReader2 = new BufferedReader(new FileReader (args[1]));
			    String[] key2;
			    String select2 =null;
			    String str2;
			    while ((str2 = bufferedReader2.readLine()) != null) {
			      	str2.trim();
	              	key2 = str2.split("=");
	              	if(!str2.equals("")){
	              	select2 =  str2.substring(0,1);
	              	              	
	              	if(!select2.equals("#")){
	              		              	
				      	ResourceSynchronizerBean2 resourceSynchronizerBean2=new ResourceSynchronizerBean2();
				      	resourceSynchronizerBean2.setKey2(key2[0]);
				      	resourceSynchronizerBean2.setValue2(str2);
				      	resourceSynchronizerBean2.setDistinctionFlg2(true);
				      	arrayList2.add(resourceSynchronizerBean2);
			      			      	
			      	}
			      }
			    }
				bufferedReader2.close();
			    
				ResourceSynchronizerBean take = null;
				ResourceSynchronizerBean2 take2 = null;
				int size = arrayList.size();
				int size2 = arrayList2.size();				
				for(int i=0; i<size2; i++ ){
					take2 =(ResourceSynchronizerBean2)arrayList2.get(i);
					if(take2.isDistinctionFlg2()){
						for(int j=0; j<size; j++ ){
							take =(ResourceSynchronizerBean)arrayList.get(j);
							if(take2.getKey2().equals(take.getKey())){
								take.setValue(take2.getValue2());
							} 
						}
					}
				}				
			} catch(FileNotFoundException e){
				System.out.println("指定されたファイルが見つかりません："+args[1]);
	
			}catch (IOException e) {
				System.out.println("ファイル読み込みエラー："+args[1]);
			}catch(ArrayIndexOutOfBoundsException e){
				e.printStackTrace();
			}
		
		try{
				BufferedWriter bw = new BufferedWriter(new FileWriter(args[2]));
				ResourceSynchronizerBean same = null;
				int array = arrayList.size();
				for(int j=0; j<array; j++ ){
					same =(ResourceSynchronizerBean)arrayList.get(j);
					bw.write(same.getValue());
					bw.newLine();
				}
				bw.close();
	
			}catch (IOException e) {
				System.out.println("ファイル出力エラー："+args[2]);
			
			}catch(ArrayIndexOutOfBoundsException e){
				System.out.println("コピー先のファイルを設定してください："+e);
			}
			  
		} else {
			System.out.println("ファイル名を２つ以上設定してください");
		}

	}
}

