/******************************************************************************* * Copyright (c) 2007, 2009 Intel Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Intel Corporation - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.core.settings.model.extension.impl; import org.eclipse.cdt.core.settings.model.ICSettingBase; import org.eclipse.cdt.core.settings.model.extension.CBuildData; import org.eclipse.cdt.core.settings.model.extension.CConfigurationData; import org.eclipse.cdt.core.settings.model.extension.CDataObject; import org.eclipse.cdt.core.settings.model.extension.CFileData; import org.eclipse.cdt.core.settings.model.extension.CFolderData; import org.eclipse.cdt.core.settings.model.extension.CLanguageData; import org.eclipse.cdt.core.settings.model.extension.CResourceData; import org.eclipse.cdt.core.settings.model.extension.CTargetPlatformData; import org.eclipse.cdt.core.settings.model.util.CDataUtil; import org.eclipse.core.runtime.IPath; public class CDataFactory { private static CDataFactory fInstance; public static CDataFactory getDefault(){ if(fInstance == null) fInstance = new CDataFactory(); return fInstance; } public CConfigurationData createConfigurationdata(String id, String name, CConfigurationData base, boolean clone){ if(clone){ id = base.getId(); } else if(id == null){ id = CDataUtil.genId(null); } return new CDefaultConfigurationData(id, name, base, this, clone); } public CFolderData createFolderData(CConfigurationData cfg, CFolderData base, String id, boolean clone, IPath path){ if(id == null) id = clone ? base.getId() : CDataUtil.genId(cfg.getId()); return new CDefaultFolderData(id, path, base, cfg, this, clone); } public CFileData createFileData(CConfigurationData cfg, CResourceData base, CLanguageData lBase, String id, boolean clone, IPath path){ if(id == null) id = clone ? base.getId() : CDataUtil.genId(cfg.getId()); if(base != null && base.getType() == ICSettingBase.SETTING_FILE) return new CDefaultFileData(id, path, (CFileData)base, cfg, this, clone); return new CDefaultFileData(id, path, (CFolderData)base, lBase, cfg, this); } public CLanguageData createLanguageData(CConfigurationData cfg, CResourceData rcBase, CLanguageData base, String id, boolean clone){ if(id == null) id = clone ? base.getId() : CDataUtil.genId(rcBase.getId()); return new CDefaultLanguageData(id, base); } public CLanguageData createLanguageData(CConfigurationData cfg, CResourceData rcBase, String id, String name, String languageId, int supportedEntryKinds, String[] rcTypes, boolean isContentTypes){ if(id == null) id = CDataUtil.genId(rcBase.getId()); CDefaultLanguageData lData = new CDefaultLanguageData(id, languageId, rcTypes, isContentTypes); lData.fName = name; lData.fSupportedKinds = supportedEntryKinds; return lData; } public CBuildData createBuildData(CConfigurationData cfg, CBuildData base, String id, String name, boolean clone){ if(id == null) id = clone ? base.getId() : CDataUtil.genId(cfg.getId()); CDefaultBuildData data = new CDefaultBuildData(id, base); data.fName = name; return data; } public CTargetPlatformData createTargetPlatformData(CConfigurationData cfg, CTargetPlatformData base, String id, String name, boolean clone){ if(id == null) id = clone ? base.getId() : CDataUtil.genId(cfg.getId()); CDefaultTargetPlatformData tpData = new CDefaultTargetPlatformData(id, base); tpData.fName = name; return tpData; } public boolean isModified(CDataObject data){ switch (data.getType()) { case ICSettingBase.SETTING_CONFIGURATION: return ((CDefaultConfigurationData)data).isModified(); case ICSettingBase.SETTING_FOLDER: return ((CDefaultFolderData)data).isModified(); case ICSettingBase.SETTING_FILE: return ((CDefaultFileData)data).isModified(); case ICSettingBase.SETTING_LANGUAGE: return ((CDefaultLanguageData)data).isModified(); case ICSettingBase.SETTING_TARGET_PLATFORM: return ((CDefaultTargetPlatformData)data).isModified(); case ICSettingBase.SETTING_BUILD: return ((CDefaultBuildData)data).isModified(); } return false; } public void setModified(CDataObject data, boolean modified){ if(data == null) return; switch (data.getType()) { case ICSettingBase.SETTING_CONFIGURATION: ((CDefaultConfigurationData)data).setModified(modified); break; case ICSettingBase.SETTING_FOLDER: ((CDefaultFolderData)data).setModified(modified); break; case ICSettingBase.SETTING_FILE: ((CDefaultFileData)data).setModified(modified); break; case ICSettingBase.SETTING_LANGUAGE: ((CDefaultLanguageData)data).setModified(modified); break; case ICSettingBase.SETTING_TARGET_PLATFORM: ((CDefaultTargetPlatformData)data).setModified(modified); break; case ICSettingBase.SETTING_BUILD: ((CDefaultBuildData)data).setModified(modified); break; } } public void link(CDataObject parent, CDataObject child){ switch(parent.getType()){ case ICSettingBase.SETTING_CONFIGURATION: switch(child.getType()){ case ICSettingBase.SETTING_FILE: case ICSettingBase.SETTING_FOLDER: ((CDefaultConfigurationData)parent).addRcData((CResourceData)child); break; case ICSettingBase.SETTING_TARGET_PLATFORM: ((CDefaultConfigurationData)parent).fTargetPlatformData = (CTargetPlatformData)child; break; case ICSettingBase.SETTING_BUILD: ((CDefaultConfigurationData)parent).fBuildData = (CBuildData)child; break; } break; case ICSettingBase.SETTING_FOLDER: ((CDefaultFolderData)parent).fLanguageDatas.add((CLanguageData)child); break; case ICSettingBase.SETTING_FILE: ((CDefaultFileData)parent).fLanguageData = (CLanguageData)child; break; } } }