/*************************************************************************************
* Product: SFAndroid (Sales Force Mobile) *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* Copyright (C) 2012-2014 E.R.P. Consultores y Asociados, S.A. All Rights Reserved. *
* Contributor(s): Yamel Senih www.erpconsultoresyasociados.com *
*************************************************************************************/
package org.spinsuite.util;
import java.util.ArrayList;
import org.spinsuite.base.DB;
import android.content.Context;
import android.database.Cursor;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
/**
* @author Yamel Senih
*
*/
public class LoadDataSpinner {
/**
* Carga un Spinner a partir de una Consulta SQL
* @author Yamel Senih 26/04/2012, 12:14:22
* @param ctx
* @param sp
* @param sql
* @param hiddenValue
* @return
* @return int
*/
public static int load(Context ctx, Spinner sp, String sql, boolean hiddenValue, boolean isMandatory){
int id = 0;
//Log.i("SQL Load Spinner", "- " + sql);
DB con = new DB(ctx);
con.openDB(DB.READ_ONLY);
id = load(ctx, con, sp, sql, hiddenValue, isMandatory);
con.closeDB(null);
return id;
}
/**
* Carga los datos en un Spinner
* @author Yamel Senih 01/05/2012, 03:18:40
* @param ctx
* @param con
* @param sp
* @param sql
* @param hiddenValue
* @return
* @return int
*/
public static int load(Context ctx, DB con, Spinner sp, String sql, boolean hiddenValue, boolean firstSpace){
int id = 0;
Cursor rs = con.querySQL(sql, null);
ArrayList<DisplaySpinner> data = new ArrayList<DisplaySpinner>();
if(rs.moveToFirst()){
if(firstSpace){
data.add(new DisplaySpinner(0, null, null));
}
do {
if(hiddenValue)
data.add(new DisplaySpinner(rs.getInt(0), rs.getString(1), rs.getString(2)));
else
data.add(new DisplaySpinner(rs.getInt(0), rs.getString(1)));
} while(rs.moveToNext());
ArrayAdapter<DisplaySpinner> sp_adapter =
new ArrayAdapter<DisplaySpinner>(ctx, android.R.layout.simple_spinner_item, data);
sp_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp.setAdapter(sp_adapter);
// Position
sp.setSelection(0);
id = ((DisplaySpinner)sp.getItemAtPosition(0)).getID();
} else {
data.add(new DisplaySpinner(0, ""));
ArrayAdapter<DisplaySpinner> sp_adapter =
new ArrayAdapter<DisplaySpinner>(ctx, android.R.layout.simple_spinner_item, data);
sp_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp.setAdapter(sp_adapter);
}
rs.close();
return id;
}
/**
* Carga los datos de las Opciones de Filtrado en un Spinner pasando como
* parametro la conexion
* @author Yamel Senih 01/05/2012, 03:35:41
* @param ctx
* @param sp
* @param sql
* @return
* @return int
*/
/*public static int loadFilterOption(Context ctx, Spinner sp, String sql){
int id = 0;
DB con = new DB(ctx);
con.openDB(DB.READ_ONLY);
id = loadFilterOption(ctx, con, sp, sql);
con.closeDB(null);
return id;
}*/
/**
* Carga los datos del las opciones de filtrado de registros
* @author Yamel Senih 01/05/2012, 03:34:05
* @param ctx
* @param con
* @param sp
* @param sql
* @return
* @return int
*/
/*public static int loadFilterOption(Context ctx, DB con, Spinner sp, String sql){
int id = 0;
Cursor rs = con.querySQL(sql, null);
LinkedList<DisplayFilterOption> data = new LinkedList<DisplayFilterOption>();
if(rs.moveToFirst()){
do {
data.add(new DisplayFilterOption(rs.getInt(0), rs.getString(1), rs.getInt(2),
rs.getString(3), rs.getString(4), rs.getString(5)));
} while(rs.moveToNext());
ArrayAdapter<DisplayFilterOption> sp_adapter =
new ArrayAdapter<DisplayFilterOption>(ctx, android.R.layout.simple_spinner_item, data);
sp_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp.setAdapter(sp_adapter);
// Position
sp.setSelection(0);
id = ((DisplayFilterOption)sp.getItemAtPosition(0)).getID();
} else {
data.add(new DisplayFilterOption(0, ""));
ArrayAdapter<DisplayFilterOption> sp_adapter =
new ArrayAdapter<DisplayFilterOption>(ctx, android.R.layout.simple_spinner_item, data);
sp_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp.setAdapter(sp_adapter);
}
rs.close();
return id;
}*/
/**
* Obtiene los Identificadores de una tabla
* @author Yamel Senih 21/05/2012, 21:42:15
* @param con
* @param tableName
* @return
* @return String
*/
public static String getIdentifierFromTable(DB con, String tableName){
StringBuilder identifier = new StringBuilder("");
String sql = new String("SELECT c.ColumnName " +
"FROM AD_Table t " +
"INNER JOIN AD_Column c ON(c.AD_Table_ID = t.AD_Table_ID) " +
"WHERE t.TableName = '" + tableName + "' " +
"AND (c.ColumnName IN('DocumentNo', 'Name', 'Description', 'DocStatus', 'IsActive') " +
"OR c.IsIdentifier = 'Y') " +
"ORDER BY c.SeqNo, c.Name " +
"LIMIT 4");
Cursor rs = con.querySQL(sql, null);
boolean pass = false;
if(rs.moveToFirst()){
do {
String column = rs.getString(0);
if(pass)
identifier.append(" || IFNULL('-' || " + column + ", '')");
else
identifier.append("IFNULL(" + column + ", '')");
pass = true;
} while(rs.moveToNext());
}
// Obtiene los identificadores
return identifier.toString();
}
}