/* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.motorola.studio.android.codeutils.db.actions; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.datatools.modelbase.sql.tables.Table; import com.motorola.studio.android.common.exception.AndroidException; import com.motorola.studio.android.manifest.AndroidProjectManifestFile; import com.motorola.studio.android.model.manifest.AndroidManifestFile; import com.motorola.studio.android.model.manifest.dom.ManifestNode; /** * * Base class with common methods to generate persistence classes. * */ public abstract class AbstractCodeGeneratorByTable { /** * Table name that will not generate a class as it is android specific table. */ public String ANDROID_METADATA = "ANDROID_METADATA"; /** * Table name that will not generate a class as it is android specific table. */ public String SQLITE_SEQUENCES = "sqlite_sequence"; private Table table; /** * Constructor that initializes the {@link org.eclipse.datatools.modelbase.sql.tables.Table Table} that will have its code generated. * */ public AbstractCodeGeneratorByTable(Table table) { this.table = table; } public Table getTable() { return table; } public void setTable(Table table) { this.table = table; } /** * Content provider package name (based on project name). * @param project The project in which the table is contained. * @return The package name that will hold the generated classes. * @throws CoreException Exception thrown in case there are problems handling the android project. * @throws AndroidException Exception thrown in case there are problems handling the android project. */ protected String getPackageName(IProject project) throws AndroidException, CoreException { // get android application name AndroidManifestFile androidManifestFile = AndroidProjectManifestFile.getFromProject(project); ManifestNode manifestNode = androidManifestFile != null ? androidManifestFile.getManifestNode() : null; String appNamespace = manifestNode.getPackageName().toLowerCase(); // return the android application name along with a persistence constant return appNamespace + ".persistence"; } protected String getTableName() { return table.getName(); } /** * Authority to access content URI (it is based on package name and content provider name). * @param packageName The package name that compounds the authority. * @param contentProviderName The content provider that compounds the authority. * @return The authority URI. */ protected String getAuthority(String packageName, String contentProviderName) { return packageName + "." + contentProviderName.toLowerCase(); } }