Java tutorial
/************************************************************************************* * 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.view; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.logging.Level; import jxl.write.WriteException; import jxl.write.biff.RowsExceededException; import org.spinsuite.adapters.ReportAdapter; import org.spinsuite.adapters.ReportExportMenuAdapter; import org.spinsuite.adapters.SearchAdapter; import org.spinsuite.base.DB; import org.spinsuite.base.R; import org.spinsuite.process.InfoPara; import org.spinsuite.process.ProcessCtl; import org.spinsuite.process.ProcessInfo; import org.spinsuite.process.ProcessInfoLog; import org.spinsuite.process.ProcessInfoParameter; import org.spinsuite.util.ActivityParameter; import org.spinsuite.util.DisplayMenuItem; import org.spinsuite.util.DisplayRecordItem; import org.spinsuite.util.DisplayType; import org.spinsuite.util.KeyNamePair; import org.spinsuite.util.LogM; import org.spinsuite.util.Msg; import org.spinsuite.util.ViewIndex; import org.spinsuite.view.lookup.InfoField; import org.spinsuite.view.lookup.VLookup; import org.spinsuite.view.lookup.VLookupCheckBox; import org.spinsuite.view.lookup.VLookupDateBox; import org.spinsuite.view.lookup.VLookupSearch; import org.spinsuite.view.lookup.VLookupSpinner; import org.spinsuite.view.lookup.VLookupString; import org.spinsuite.view.report.ReportPrintData; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.res.Configuration; import android.graphics.Color; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.app.FragmentActivity; import android.support.v4.view.GravityCompat; import android.support.v4.view.MenuItemCompat; import android.support.v4.widget.DrawerLayout; import android.support.v4.widget.SearchViewCompat; import android.support.v4.widget.SearchViewCompat.OnCloseListenerCompat; import android.support.v4.widget.SearchViewCompat.OnQueryTextListenerCompat; import android.text.TextUtils; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import android.widget.ListView; import android.widget.PopupMenu; import android.widget.ScrollView; import android.widget.TableLayout; import android.widget.TextView; import com.itextpdf.text.DocumentException; /** * @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> * */ public class V_Process extends FragmentActivity { /** Adapter */ private SearchAdapter logAdapter = null; /** Report Adapter */ private ReportAdapter reportAdapter = null; /** Field */ private InfoField m_field = null; /** View Index Array */ private ArrayList<ViewIndex> viewList = null; /** Parameter */ private ActivityParameter m_activityParam = null; /** Process Info */ private ProcessInfo m_pInfo = null; /** Process Control */ private ProcessCtl m_pControl = null; /** Row */ private LinearLayout v_row = null; /** Header Report */ private LinearLayout ll_HeaderReport = null; /** Process Parameters */ private LinearLayout ll_ProcessPara = null; /** Main Layout */ private ScrollView sv_Param = null; /** List View */ private ListView lv_LogReport = null; /** Row Parameter */ private LayoutParams v_rowParam = null; /** Table Layout */ private TableLayout v_tableLayout = null; /** Text Description */ private TextView tv_Description = null; /** Text Help */ private TextView tv_Help = null; /** Text Summary */ private TextView tv_Summary = null; /** Item Search */ private MenuItem iSearch = null; /** Item Print Format */ private MenuItem iPrintFormat = null; /** Item Process */ private MenuItem iProcess = null; /** Print Format */ private KeyNamePair[] m_PrintFormats = null; /** Popup Menu */ private PopupMenu pPrintFormat = null; /** Is Loaded */ private boolean isLoaded = false; /** Drawer Layout */ private DrawerLayout m_DLayout = null; /** List View with options */ private ListView m_DList = null; /** Toggle */ private ActionBarDrawerToggle m_DToggle = null; /** Flag (Drawer Loaded) */ private boolean isDrawerLoaded = false; /** View Weight */ private static final float WEIGHT_SUM = 2; private static final float WEIGHT = 1; /** Export */ private static final int SHARE_FOR = 0; private static final int EXPORT_TO_PDF = 1; private static final int EXPORT_TO_XLS = 2; private static final int EXPORT_TO_XML = 3; private static final int EXPORT_TO_HTML = 4; public void onCreate(Bundle icicle) { super.onCreate(icicle); super.setContentView(R.layout.v_process); // Get Field Bundle bundle = getIntent().getExtras(); if (bundle != null) { m_field = (InfoField) bundle.getParcelable("Field"); m_activityParam = (ActivityParameter) bundle.getParcelable("Param"); } // if (m_field == null) m_field = new InfoField(); // if (m_activityParam == null) m_activityParam = new ActivityParameter(); // Get Elements ll_HeaderReport = (LinearLayout) findViewById(R.id.ll_HeaderReport); ll_ProcessPara = (LinearLayout) findViewById(R.id.ll_ProcessPara); tv_Description = (TextView) findViewById(R.id.tv_Description); tv_Help = (TextView) findViewById(R.id.tv_Help); sv_Param = (ScrollView) findViewById(R.id.sv_Param); lv_LogReport = (ListView) findViewById(R.id.lv_LogReport); // Set Parameter v_rowParam = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, WEIGHT); // Table Layout v_tableLayout = new TableLayout(this); // Add View sv_Param.addView(v_tableLayout); // viewList = new ArrayList<ViewIndex>(); // Title getActionBar().setSubtitle(m_activityParam.getName()); getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); // loadProcessInfo(); // Load Drawer loadDrawerOption(); // Load Print Formats loadPrintFormat(); } /** * Load Drawer * @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 14/03/2014, 09:23:22 * @return void */ protected void loadDrawer() { // m_DLayout = (DrawerLayout) findViewById(R.id.drawer_layout); // m_DList = (ListView) findViewById(R.id.left_drawer); // m_DLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); m_DList.setOnItemClickListener(new ListView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapter, View arg1, int position, long arg3) { // Selected Option onSelectedDrawerOption((DisplayMenuItem) adapter.getItemAtPosition(position)); } }); m_DToggle = new ActionBarDrawerToggle(this, m_DLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) { public void onDrawerClosed(View view) { invalidateOptionsMenu(); } public void onDrawerOpened(View drawerView) { invalidateOptionsMenu(); } }; // Set Toggle m_DLayout.setDrawerListener(m_DToggle); // isDrawerLoaded = true; } /** * Share Report * @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 03/04/2014, 14:42:18 * @param position * @param printData * @return void */ private void shareReport(int position, ReportPrintData printData) { // Path String localPath = null; String type = null; try { if (position == 0) { localPath = printData.createPDF(); type = "pdf"; } else if (position == 1) { localPath = printData.createXLS(); type = "excel"; } // if (localPath != null) { // Share Uri sourceUri = Uri.fromFile(new File(localPath)); // Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.putExtra(Intent.EXTRA_STREAM, sourceUri); shareIntent.putExtra(Intent.EXTRA_SUBJECT, getResources().getText(R.string.msg_Report) + " \"" + printData.getInfoReport().getName() + "\""); shareIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.msg_SharedFromSFAndroid)); // shareIntent.setType("application/" + type); // startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.Action_Share))); } } catch (Exception e) { } } /** * On Selected Item * @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 31/03/2014, 22:13:32 * @param item * @return void */ protected void onSelectedDrawerOption(DisplayMenuItem item) { final ReportPrintData printData = m_pControl.getReportPrintData(); if (printData == null || !isLoaded) return; // Message String msg = null; // Path String path = null; // if (item.getSFA_Menu_ID() == SHARE_FOR) { new AlertDialog.Builder(this).setSingleChoiceItems( new String[] { getString(R.string.msg_SendAsPDF), getString(R.string.msg_SendAsXLS) }, 0, null) .setPositiveButton(R.string.msg_Acept, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.dismiss(); int selectedPosition = ((AlertDialog) dialog).getListView().getCheckedItemPosition(); // Share Report shareReport(selectedPosition, printData); } }).show(); } else if (item.getSFA_Menu_ID() == EXPORT_TO_PDF) { try { path = printData.createPDF(); } catch (FileNotFoundException e) { LogM.log(getApplicationContext(), getClass(), Level.SEVERE, "Error in Export to PDF:", e); msg = getResources().getString(R.string.msg_FileNotFoundException) + " " + e.getMessage(); } catch (DocumentException e) { LogM.log(getApplicationContext(), getClass(), Level.SEVERE, "Error in Export to PDF:", e); msg = getResources().getString(R.string.msg_DocumentException) + " " + e.getMessage(); } } else if (item.getSFA_Menu_ID() == EXPORT_TO_XLS) { try { path = printData.createXLS(); } catch (RowsExceededException e) { LogM.log(getApplicationContext(), getClass(), Level.SEVERE, "Error in Export to XLS:", e); msg = getResources().getString(R.string.msg_RowsExceededException) + " " + e.getMessage(); } catch (WriteException e) { LogM.log(getApplicationContext(), getClass(), Level.SEVERE, "Error in Export to XLS:", e); msg = getResources().getString(R.string.msg_WriteException) + " " + e.getMessage(); } catch (IOException e) { LogM.log(getApplicationContext(), getClass(), Level.SEVERE, "Error in Export to XLS:", e); msg = getResources().getString(R.string.msg_IOException) + " " + e.getMessage(); } } else if (item.getSFA_Menu_ID() == EXPORT_TO_XML) { } else if (item.getSFA_Menu_ID() == EXPORT_TO_HTML) { } // Show Path if (path != null) { // Message Msg.toastMsg(getApplicationContext(), getResources().getString(R.string.msg_Exported) + "... " + getResources().getString(R.string.msg_Path) + " \"" + path + "\""); } else if (msg != null) { // Show Message Msg.alertMsg(this, getResources().getString(R.string.msg_Error), msg); } // Close Drawer m_DLayout.closeDrawer(m_DList); } /** * Load Drawer Option * @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 14/03/2014, 17:45:08 * @return void */ private void loadDrawerOption() { loadDrawer(); // Populate ArrayList<DisplayMenuItem> listMenu = new ArrayList<DisplayMenuItem>(); listMenu.add( new DisplayMenuItem(SHARE_FOR, getResources().getString(R.string.Action_Share), null, "share_m")); listMenu.add(new DisplayMenuItem(EXPORT_TO_PDF, getResources().getString(R.string.Action_Export_PDF), null, "pdf_m")); listMenu.add(new DisplayMenuItem(EXPORT_TO_XLS, getResources().getString(R.string.Action_Export_XLS), null, "xls_m")); listMenu.add(new DisplayMenuItem(EXPORT_TO_XML, getResources().getString(R.string.Action_Export_XML), null, "xml_m")); listMenu.add(new DisplayMenuItem(EXPORT_TO_HTML, getResources().getString(R.string.Action_Export_HTML), null, "html_m")); // Set Adapter ReportExportMenuAdapter mi_adapter = new ReportExportMenuAdapter(this, R.layout.i_activity_menu, true, listMenu); mi_adapter.setDropDownViewResource(R.layout.i_activity_menu); m_DList.setAdapter(mi_adapter); } @Override public boolean onPrepareOptionsMenu(Menu menu) { if (isDrawerLoaded) { boolean drawerOpen = m_DLayout.isDrawerOpen(m_DList); if (drawerOpen) menu.setGroupVisible(R.id.group_process, false); else { if (isLoaded) { // Show Search Menu if ((logAdapter != null && !m_pInfo.isReport()) || (reportAdapter != null && m_pInfo.isReport())) iSearch.setVisible(true); if (m_pInfo.isReport()) { iPrintFormat.setVisible(true); } } // Visible Process iProcess.setVisible(true); } } return super.onPrepareOptionsMenu(menu); } /** * Is Drawer Layout Open * @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 16/03/2014, 10:32:25 * @return * @return boolean */ protected boolean isDrawerLayoutOpen() { if (isDrawerLoaded) return m_DLayout.isDrawerOpen(m_DList); return false; } /** * Get Drawer List * @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 14/03/2014, 17:43:59 * @return * @return ListView */ protected ListView getDrawerList() { return m_DList; } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); if (isDrawerLoaded) m_DToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (isDrawerLoaded) m_DToggle.onConfigurationChanged(newConfig); } /** * Load Process Information * @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 18/03/2014, 22:07:43 * @return void */ private void loadProcessInfo() { // Instance Process m_pInfo = new ProcessInfo(getApplicationContext(), m_activityParam, null); // Set Description String info = m_pInfo.getDescription(); if (info != null && info.length() > 0) { // Set Info tv_Description.setText(info); tv_Description.setVisibility(TextView.VISIBLE); } // Set Help info = m_pInfo.getHelp(); if (info != null && info.length() > 0) { // Set Info tv_Help.setText(info); tv_Help.setVisibility(TextView.VISIBLE); } // Get for Load InfoPara[] infoPara = m_pInfo.getProcessInfoPara(); if (infoPara != null) { // Add Fields for (InfoPara pField : infoPara) { // Add View to Layout InfoField field = new InfoField(pField); // addView(field); // Add To Parameter if (pField.IsRange) { InfoField field_To = new InfoField(pField); field_To.ColumnName = field.ColumnName + "_To"; field_To.IsSameLine = true; field_To.DefaultValue = pField.DefaultValue2; addView(field_To); } } } // Add Summary Text v_row = new LinearLayout(this); v_row.setOrientation(LinearLayout.HORIZONTAL); v_row.setWeightSum(WEIGHT_SUM); // tv_Summary = new TextView(this); tv_Summary.setVisibility(TextView.GONE); v_row.addView(tv_Summary, v_rowParam); v_tableLayout.addView(v_row); // Instance Process Control m_pControl = new ProcessCtl(m_pInfo); } /** * Add View to Process Panel * @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 18/03/2014, 22:10:08 * @param field * @return void */ private void addView(InfoField field) { boolean isSameLine = field.IsSameLine; boolean isFirst = false; // Add New Row if (isFirst = (v_row == null) || !isSameLine) { v_row = new LinearLayout(this); v_row.setOrientation(LinearLayout.HORIZONTAL); v_row.setWeightSum(WEIGHT_SUM); } VLookup lookup = null; // Add if (DisplayType.isDate(field.DisplayType)) { lookup = new VLookupDateBox(this, field); } else if (DisplayType.isText(field.DisplayType)) { VLookupString lookupString = new VLookupString(this, field); lookupString.setInputType(DisplayType.getInputType(field.DisplayType)); lookup = lookupString; } else if (DisplayType.isBoolean(field.DisplayType)) { lookup = new VLookupCheckBox(this, field); } else if (DisplayType.isLookup(field.DisplayType)) { // Table Direct if (field.DisplayType == DisplayType.TABLE_DIR) { lookup = new VLookupSpinner(this, field); } else if (field.DisplayType == DisplayType.SEARCH) { lookup = new VLookupSearch(this, field); } } // is Filled if (lookup != null) { lookup.setLayoutParams(v_rowParam); ViewIndex index = new ViewIndex(lookup, field.ColumnName); viewList.add(index); v_row.addView(lookup); // Add Row if (!isSameLine || isFirst) v_tableLayout.addView(v_row); } } /** * Get Values from Parameters * @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 21/03/2014, 17:05:03 * @return * @return boolean */ private boolean getValuesFromParameters() { boolean ok = true; // Parameters ArrayList<ProcessInfoParameter> arrayParameter = new ArrayList<ProcessInfoParameter>(); // ProcessInfoParameter parameter = null; m_pInfo.setParameter(null); // Get Values for (ViewIndex vIndex : viewList) { VLookup lookup = vIndex.getVLookup(); InfoField field = lookup.getField(); if ((field.IsMandatory) && lookup.isEmpty()) { Msg.alertMustFillField(this, field.Name, lookup.getChildView()); // set ok to false ok = false; break; } // Get Value Object value = DisplayType.getJDBC_Value(field.DisplayType, lookup.getValue(), true, true); if (!field.IsSameLine) { parameter = new ProcessInfoParameter(field.ColumnName, value, field.Name, lookup.getDisplayValue(), field.DisplayType); } else { if (parameter != null) { parameter.setParameter_To(value); parameter.setInfo_To(field.Name); } } // Add to Array arrayParameter.add(parameter); // Set on Context } // Populate array ProcessInfoParameter[] param = new ProcessInfoParameter[arrayParameter.size()]; arrayParameter.toArray(param); // m_pInfo.setParameter(param); // Return return ok; } @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); // Inflate menu MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.process, menu); // Get Item iSearch = menu.findItem(R.id.action_search); // Print Format iPrintFormat = menu.findItem(R.id.action_print_format); // Process iProcess = menu.findItem(R.id.action_process); // Search View final View searchView = SearchViewCompat.newSearchView(this); if (searchView != null) { // Set Back ground Color int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null); EditText searchText = (EditText) searchView.findViewById(id); // Set Parameters if (searchText != null) searchText.setTextAppearance(this, R.style.TextSearch); // SearchViewCompat.setOnQueryTextListener(searchView, new OnQueryTextListenerCompat() { @Override public boolean onQueryTextChange(String newText) { String mFilter = !TextUtils.isEmpty(newText) ? newText : null; // Search searchLinstView(mFilter); return true; } }); SearchViewCompat.setOnCloseListener(searchView, new OnCloseListenerCompat() { @Override public boolean onClose() { if (!TextUtils.isEmpty(SearchViewCompat.getQuery(searchView))) { SearchViewCompat.setQuery(searchView, null, true); } return true; } }); MenuItemCompat.setActionView(iSearch, searchView); // Set Visible iSearch.setVisible(false); iPrintFormat.setVisible(false); } return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if (isDrawerLoaded) { if (m_DToggle.onOptionsItemSelected(item)) { return true; } } // switch (item.getItemId()) { case R.id.action_process: if (isLoaded) { ll_ProcessPara.setVisibility(ScrollView.VISIBLE); item.setIcon(R.drawable.process_m); if (m_pInfo.isReport()) { iSearch.setVisible(false); iPrintFormat.setVisible(false); } // isLoaded = false; return true; } // Run Process if (!getValuesFromParameters()) return false; m_pControl.runProcess(); tv_Summary.setTextAppearance(this, R.style.TextStandard); tv_Summary.setVisibility(TextView.VISIBLE); // If Error if (m_pInfo.isError()) tv_Summary.setTextColor(Color.RED); else tv_Summary.setTextColor(Color.BLUE); // Set Summary tv_Summary.setText(m_pInfo.getSummary()); // Show all logs if (!m_pInfo.isReport() || m_pInfo.isError()) showLog(); // Show report else if (m_pInfo.isReport()) { iSearch.setVisible(true); iPrintFormat.setVisible(true); ll_HeaderReport.setVisibility(LinearLayout.VISIBLE); showReport(0); } // Hide Parameter if (!m_pInfo.isError()) { ll_ProcessPara.setVisibility(ScrollView.GONE); item.setIcon(R.drawable.config_m); // Set Is Loaded isLoaded = true; } return true; case R.id.action_print_format: showPrintFormat(); return true; } return super.onOptionsItemSelected(item); } /** * Load Print Format * @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 31/03/2014, 11:29:18 * @return */ private void loadPrintFormat() { String sql = new String("SELECT pf.AD_PrintFormat_ID, pf.Name " + "FROM AD_PrintFormat pf " + "WHERE pf.IsActive = ? " + "AND EXISTS(SELECT 1 " + " FROM AD_Process p " + " LEFT JOIN AD_ReportView rv ON(rv.AD_ReportView_ID = p.AD_ReportView_ID) " + " LEFT JOIN AD_PrintFormat pft ON(pft.AD_PrintFormat_ID = p.AD_PrintFormat_ID) " + " WHERE p.AD_Process_ID = ? " + " AND pf.SFA_Table_ID = COALESCE(rv.SFA_Table_ID, pft.SFA_Table_ID)) " + "ORDER BY IsDefault DESC"); m_PrintFormats = DB.getKeyNamePairs(getApplicationContext(), sql, new String[] { "Y", String.valueOf(m_pInfo.getAD_Process_ID()) }); } /** * Show Print Formats * @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 31/03/2014, 11:57:26 * @return void */ private void showPrintFormat() { View menuItemView = findViewById(R.id.action_print_format); pPrintFormat = new PopupMenu(this, menuItemView); for (KeyNamePair pFormat : m_PrintFormats) { pPrintFormat.getMenu().add(Menu.NONE, pFormat.getKey(), Menu.NONE, pFormat.getName()); } // Listener pPrintFormat.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { int m_AD_PrintFormatItem_ID = item.getItemId(); if (isLoaded) { showReport(m_AD_PrintFormatItem_ID); } return false; } }); // Show pPrintFormat.show(); } /** * Show Process Log * @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 21/03/2014, 18:28:06 * @return void */ private void showLog() { ArrayList<DisplayRecordItem> data = new ArrayList<DisplayRecordItem>(); SimpleDateFormat formatDate = DisplayType.getDateFormat(getApplicationContext()); // Get Logs ProcessInfoLog[] logs = m_pInfo.getLogs(); if (logs != null) { for (ProcessInfoLog log : m_pInfo.getLogs()) { String strLog = log.getP_Msg(); // Add Date if (log.getP_Date() != null) strLog += " | " + formatDate.format(log.getP_Date()); // Number if (log.getP_Number() != null) strLog += " | " + log.getP_Number().doubleValue(); // Add to array data.add(new DisplayRecordItem(log.getLog_ID(), strLog.toString())); } } // Set Adapter logAdapter = new SearchAdapter(this, R.layout.i_search, data); logAdapter.setDropDownViewResource(R.layout.i_search); lv_LogReport.setAdapter(logAdapter); } /** * Show report from data * @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 25/03/2014, 20:52:23 * @param m_AD_PrintFormat_ID * @return void */ private void showReport(int m_AD_PrintFormat_ID) { // Get Print Data ReportPrintData printData = m_pControl.getReportPrintData(m_AD_PrintFormat_ID); if (printData != null) { // reportAdapter = new ReportAdapter(getApplicationContext(), printData.getData(), printData.getColumns(), ll_HeaderReport); lv_LogReport.setAdapter(reportAdapter); } } /** * Search in Adapters * @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 27/03/2014, 16:35:46 * @param filter * @return void */ private void searchLinstView(String filter) { if (!isLoaded) return; if (logAdapter != null && !m_pInfo.isReport()) { logAdapter.getFilter().filter(filter); } else if (reportAdapter != null && m_pInfo.isReport()) { reportAdapter.getFilter().filter(filter); } } /** * On Selected Record * @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 01/03/2014, 13:23:17 * @param item * @return void */ /*private void selectedRecord(DisplayRecordItem item){ Intent intent = getIntent(); Bundle bundle = new Bundle(); bundle.putParcelable("Record", item); bundle.putString("ColumnName", m_field.ColumnName); intent.putExtras(bundle); setResult(Activity.RESULT_OK, intent); finish(); }*/ @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == Activity.RESULT_OK) { if (data != null) { Bundle bundle = data.getExtras(); DisplayRecordItem item = (DisplayRecordItem) bundle.getParcelable("Record"); String columnName = bundle.getString("ColumnName"); // if a field or just search if (columnName != null) { for (ViewIndex vIndex : viewList) { VLookup lookup = vIndex.getVLookup(); if (vIndex.getColumnName().equals(columnName)) { ((VLookupSearch) lookup).setItem(item); break; } } } } } } }