/**
* @version $Id: UIProject.java 1839 2014-04-16 02:33:51Z yukihiro-kinjyo $
*
* 2011/10/12 17:34:28
* @author kousuke-morishima
*
* Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved.
*/
package com.tida_okinawa.corona.internal.ui.views.model.impl;
import java.util.List;
import org.eclipse.core.resources.IProject;
import com.tida_okinawa.corona.common.StringUtil;
import com.tida_okinawa.corona.internal.ui.CoronaConstants;
import com.tida_okinawa.corona.internal.ui.views.model.IUIContainer;
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.io.IoActivator;
import com.tida_okinawa.corona.io.model.ICoronaProduct;
import com.tida_okinawa.corona.io.model.ICoronaProject;
/**
* @author kousuke-morishima
*/
public class UIProject extends UIContainer implements IUIProject {
private int id;
/* public */UIProject(IUIContainer parent, ICoronaProject object, IProject resource) {
super(parent, object, resource);
if (object.getId() == 0) {
IoActivator.getService().addProject(object);
}
this.id = object.getId();
}
@Override
public int getId() {
return id;
}
@Override
public ICoronaProject getObject() {
ICoronaProject project = IoActivator.getService().getProject(id);
if (project == null) {
new IllegalStateException("デバッグ用。Project does not exists. (Project is already deleted from DataBase.)").printStackTrace();
return null;
}
return project;
}
@Override
public IProject getResource() {
return (IProject) resource;
}
@Override
protected IUIElement[] createChildren() {
/* DBのプロジェクト名とWorkSpaceのフォルダ名が一致すればChildrenを作成 */
if (getObject().getName().equals(resource.getName())) {
List<ICoronaProduct> products = getObject().getProducts();
int size = products.size();
/* ターゲットの数 + 共通辞書フォルダ1 + 問合せデータフォルダ1 */
IUIElement[] children = new IUIElement[size + 2];
;
/* ターゲットがあれば、ターゲットは以下のChildrenを作成 */
int i = 0;
for (; i < size; i++) {
ICoronaProduct product = products.get(i);
children[i] = CoronaModel.INSTANCE.create(this, product, createFolder(StringUtil.convertValidFileName(product.getName())));
}
children[i++] = CoronaModel.INSTANCE.create(this, new Library(CoronaConstants.COMMON_LIBRARY_NAME),
createFolder(CoronaConstants.COMMON_LIBRARY_NAME));
children[i++] = CoronaModel.INSTANCE.create(this, new ClaimFolder(), createFolder(CoronaConstants.CLAIM_FOLDER_NAME));
return children;
} else {
return new IUIElement[0];
}
}
@Override
public IUIProduct[] getProducts() {
IUIElement[] children = getChildren();
IUIProduct[] ret = new IUIProduct[children.length - 2];
for (int i = 0; i < ret.length; i++) {
ret[i] = (IUIProduct) children[i];
}
return ret;
}
}