/** * @version $Id: ControlLocalFolderAndFileUtil.java 1839 2014-04-16 02:33:51Z yukihiro-kinjyo $ * * 2011/10/20 16:08:00 * @author shingo_wakamatsu * * Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved. */ package com.tida_okinawa.corona.ui.wizards; import java.util.List; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.Path; import com.tida_okinawa.corona.internal.ui.CoronaConstants; import com.tida_okinawa.corona.internal.ui.views.model.IUIDictionary; import com.tida_okinawa.corona.internal.ui.views.model.IUIElement; import com.tida_okinawa.corona.internal.ui.views.model.IUIProduct; import com.tida_okinawa.corona.internal.ui.views.model.IUIProject; import com.tida_okinawa.corona.internal.ui.views.model.IUIWork; import com.tida_okinawa.corona.internal.ui.views.model.impl.CoronaModel; import com.tida_okinawa.corona.internal.ui.views.model.impl.FileContent; import com.tida_okinawa.corona.io.model.IClaimData; import com.tida_okinawa.corona.io.model.IClaimWorkData; import com.tida_okinawa.corona.io.model.ICoronaProduct; import com.tida_okinawa.corona.io.model.ICoronaProject; import com.tida_okinawa.corona.io.model.dic.ICoronaDic; /** * @author shingo_wakamatsu */ public class ControlLocalFolderAndFileUtil { /** * デフォルトコンストラクター。処理なし */ public ControlLocalFolderAndFileUtil() { } /** * ローカルに「ターゲット」以下の辞書、中間データのファイルを作成 * * @param uiProject * @param monitor * プログレスモニター */ public void createDicAndWorkData(IUIProject uiProject, IProgressMonitor monitor) { for (IUIElement child : uiProject.getChildren()) { /* 「ターゲット」 */ if (child instanceof IUIProduct) { IUIProduct uiProduct = (IUIProduct) child; // PrjExplの「ターゲット」情報を取得 ICoronaProduct product = uiProduct.getObject(); if (product == null) { continue; } uiProduct.update(monitor); /* 辞書フォルダを作成 */ createFolder(uiProduct.getResource(), CoronaConstants.LIBRARY_NAME, monitor); /* 辞書データの実ファイルを作成 */ for (ICoronaDic dic : product.getDictionarys(ICoronaDic.class)) { IUIDictionary uiDic = CoronaModel.INSTANCE.getDic(uiProduct, dic); uiDic.update(monitor); } /* ターゲットフォルダ,処理結果フォルダを作成 */ List<IClaimData> claims = uiProduct.getObject().getClaimDatas(); for (IClaimData claim : claims) { createFolder(uiProduct.getResource(), CoronaConstants.createCorrectionFolderName(claim.getName()), monitor); /* 中間データの実ファイルを作成 */ for (IClaimWorkData work : product.getClaimWorkDatas()) { IUIWork uiWork = CoronaModel.INSTANCE.getWork(uiProduct, work); uiWork.update(monitor); } } } } } /** * ローカルに共通辞書ファイルを作成 * * @param uiProject * @param monitor * プログレスモニター */ public void createCommonDicFile(IUIProject uiProject, IProgressMonitor monitor) { IProject iProject = uiProject.getResource(); /* フォルダが存在していなかったら、新規作成 */ IFolder cmnDicFolder = uiProject.getResource().getFolder(CoronaConstants.COMMON_LIBRARY_NAME); if (cmnDicFolder.exists() == false) { createFolder(iProject, CoronaConstants.COMMON_LIBRARY_NAME, monitor); } ICoronaProject coronaProject = uiProject.getObject(); List<ICoronaDic> dics = coronaProject.getDictionarys(ICoronaDic.class); for (ICoronaDic d : dics) { createFile(cmnDicFolder, d.getName(), monitor); } } /** * ローカルに問い合わせデータファイルを作成 * * @param uiProject * @param monitor * プログレスモニター */ public void createClaimDataFile(IUIProject uiProject, IProgressMonitor monitor) { IProject iProject = uiProject.getResource(); /* フォルダが存在していなかったら、新規作成 */ IFolder claimDataFolder = uiProject.getResource().getFolder(CoronaConstants.CLAIM_FOLDER_NAME); if (claimDataFolder.exists() == false) { createFolder(iProject, CoronaConstants.CLAIM_FOLDER_NAME, monitor); } ICoronaProject coronaProject = uiProject.getObject(); List<IClaimData> claims = coronaProject.getClaimDatas(); for (IClaimData c : claims) { createFile(claimDataFolder, c.getName(), monitor); } } /** * ローカルにフォルダーを作成 * * @param iContainer * @param path * 作成パス * @param monitor * プログレスモニター * @return 作成されたフォルダーのハンドル */ public IFolder createFolder(IContainer iContainer, String path, IProgressMonitor monitor) { IFolder folder = iContainer.getFolder(new Path(path)); if (!folder.exists()) { try { folder.create(false, true, monitor); } catch (CoreException e) { e.printStackTrace(); } } return folder; } /** * ローカルにファイルを作成 * * @param iContainer * @param path * 作成パス * @param monitor * プログレスモニター * @return 作成されたファイルのハンドル */ public IFile createFile(IContainer iContainer, String path, IProgressMonitor monitor) { IFile file = iContainer.getFile(new Path(path)); if (!file.exists()) { try { file.create(FileContent.toStream(CoronaModel.INSTANCE.create(file)), true, monitor); } catch (CoreException e) { e.printStackTrace(); } } return file; } }