/************************************************************************************* * 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-2013 E.R.P. Consultores y Asociados, S.A. All Rights Reserved. * * Contributor(s): Yamel Senih www.erpconsultoresyasociados.com * *************************************************************************************/ package org.spinsuite.login; import java.io.File; import org.spinsuite.base.DB; import org.spinsuite.base.R; import org.spinsuite.interfaces.I_Login; import org.spinsuite.util.Env; import org.spinsuite.util.Msg; import android.app.ActionBar; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.os.Environment; import android.os.StrictMode; import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.NavUtils; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; /** * * @author Yamel Senih * */ public class T_Connection extends FragmentActivity implements I_Login { /** URL SOAP Comunication */ private EditText et_UrlSoap; /** Synchronization Method */ private EditText et_Method; private EditText et_Timeout; /** NameSpace*/ private EditText et_NameSpace; /** Soap Object InitialLoad */ //private InitialLoad m_load ; /** Sync */ private Button butt_InitSync; /** Save data SD */ private CheckBox ch_SaveSD; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.t_connection); StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); et_UrlSoap = (EditText) findViewById(R.id.et_UrlSoap); et_Method = (EditText) findViewById(R.id.et_Method); et_Timeout = (EditText) findViewById(R.id.et_Timeout); et_NameSpace = (EditText) findViewById(R.id.et_NameSpace); ch_SaveSD = (CheckBox) findViewById(R.id.ch_SaveSD); // Carlos Parada Setting Parameters for SFAndroid Service Call et_UrlSoap.setText("http://193.1.1.243:8080/ADInterface/services/SFAndroidService"); et_NameSpace.setText("http://www.erpcya.com/"); et_Method.setText("InitialLoad"); //End Carlos Parada butt_InitSync = (Button) findViewById(R.id.butt_InitSync); //lockFront(); // Init Sync butt_InitSync.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { if(valid()){ synchronize(); lockFront(); } } }); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: NavUtils.navigateUpTo(this, new Intent(this, Login.class)); return true; } return super.onOptionsItemSelected(item); } /** * loock the field when sync is done * @author Yamel Senih 03/05/2012, 15:47:26 * @return void */ public void lockFront(){ if(!Env.isEnvLoad(this)){ et_UrlSoap.setEnabled(true); et_Method.setEnabled(true); et_NameSpace.setEnabled(true); ch_SaveSD.setEnabled(true); ch_SaveSD.setChecked(true); } else { et_UrlSoap.setEnabled(false); et_Method.setEnabled(false); et_NameSpace.setEnabled(false); ch_SaveSD.setEnabled(false); //Establece el Timeout en la Ventana //Carlos Parada 04/11/2012 setTimeOut(); //Fin Carlos Parada } } /** * Set Timeout in Activity * @author Carlos Parada 04/11/2012, 19:59:01 * @return void */ public void setTimeOut() { // int timeoutInt = Env.getContextAsInt(this, "#Timeout"); String timeout = String.valueOf(timeoutInt); et_Timeout.setText(timeout); } /** * Action Initial Synchronization * @author Yamel Senih 24/04/2012, 00:14:42 * Carlos Parada 17/05/2012 Se Coloco la carga inicial automatica desde adempiere * @return void */ private void synchronize(){ /*m_load = new InitialLoad(){ @Override protected void onPostExecute(Object result) { super.onPostExecute(result); // Load Context loadContext(); } }; m_load.LoadSoapFromContext(this);*/ et_UrlSoap.setEnabled(true); et_Method.setEnabled(true); et_NameSpace.setEnabled(true); DialogFragment df = new T_Login_Init(et_UrlSoap.getText().toString(),et_Method.getText().toString(),et_NameSpace.getText().toString()); df.show(getSupportFragmentManager(), this.getResources().getString(R.string.InitSync)); if(!Env.isEnvLoad(this)){ /*RemoteViews contentView = new RemoteViews(this.getPackageName(), R.layout.v_progressdialog); contentView.setImageViewResource(R.id.iV_Synchronizing, R.drawable.syncserver_m); contentView.setTextViewText(R.id.tV_CurrentSinchronizing, this.getResources().getString(R.string.msg_CallingWebService)); contentView.setTextViewText(R.id.tV_Percentaje, "0%"); NotificationManager notify = Msg.notificationMsg(this, R.drawable.syncserver_h, "",0, this.getParent().getIntent(), contentView); m_load.setContentView(contentView); m_load.setM_NotificationManager(notify); m_load.execute();*/ } else { loadContext(); } } /** * Load Context Data * @author Yamel Senih 17/10/2012, 16:46:40 * @return void */ private void loadContext(){ /** * Carlos Parada, Load var in comntext */ if (Env.isEnvLoad(this)) { String sql = new String("SELECT sc.Name, sc.Value FROM AD_SysConfig sc"); DB con = new DB(this); con.openDB(DB.READ_ONLY); Cursor rs = con.querySQL(sql, null); if(rs.moveToFirst()){ do { Env.setContext(this, "#" + rs.getString(0), rs.getInt(1)); } while(rs.moveToNext()); } con.closeDB(rs); } } /** * Valid fields on Activity * @author Yamel Senih 24/04/2012, 12:33:57 * @return * @return boolean */ private boolean valid(){ if(et_UrlSoap.getText() != null && et_UrlSoap.getText().toString().length() > 0){ if(et_Method.getText() != null && et_Method.getText().toString().length() > 0){ if(et_NameSpace.getText() != null && et_NameSpace.getText().toString().length() > 0){ Env.setContext(this, "#SUrlSoap", et_UrlSoap.getText().toString()); Env.setContext(this, "#SMethod", et_Method.getText().toString()); Env.setContext(this, "#SNameSpace", et_NameSpace.getText().toString()); Env.setContext(this, "#SaveSD", ch_SaveSD.isChecked()); createDBDirectory(); if(et_Timeout.getText() != null && et_Timeout.getText().toString().length() > 0){ String limit = et_Timeout.getText().toString(); Env.setContext(this, "#Timeout", Integer.parseInt(limit)); } return true; } else { Msg.alertMustFillField(this, R.string.NameSpace, et_NameSpace); } } else { Msg.alertMustFillField(this, R.string.MethodSync, et_Method); } } else { Msg.alertMustFillField(this, R.string.Url_Soap, et_UrlSoap); } return false; } /** * Create a folder /ERP/data with Database * @author Yamel Senih 19/08/2012, 05:45:05 * @return void */ private void createDBDirectory(){ if(!Env.isEnvLoad(this)){ if(Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED) && ch_SaveSD.isChecked()){ String docPath = Environment.getExternalStorageDirectory() + File.separator + Env.APP_DIRECTORY + File.separator + Env.DOC_DIRECTORY; // String dbPath = Environment.getExternalStorageDirectory() + DB.getDB_Path(); String dbPathName = Environment.getExternalStorageDirectory() + DB.getDB_PathName(); File f = new File(dbPath); if(!f.exists()) { if(f.mkdirs()){ Env.setDB_Path(this, dbPathName); } else { Env.setDB_Path(this, DB.DB_NAME); } } else if(f.isDirectory()) { File fDB = new File(dbPathName); fDB.delete(); Env.setDB_Path(this, dbPathName); } else if(f.isFile()){ if(f.mkdirs()){ Env.setDB_Path(this, dbPathName); } else { Env.setDB_Path(this, DB.DB_NAME); } } // Create Document Folder File doc = new File(docPath); if(!doc.exists()) { if(doc.mkdirs()){ // Set Application Directory Env.setAppDirName(this, docPath); } } } else { Env.setDB_Path(this, DB.DB_NAME); } } } @Override public void onStart() { super.onStart(); String url = et_UrlSoap.getText().toString(); String method = et_Method.getText().toString(); String timeout = et_Timeout.getText().toString(); String nameSpace = et_NameSpace.getText().toString(); // Load URL SOAP or SOPA JAJAJAJAJAJAJAJ if(url == null || url.length() == 0){ url = Env.getContext(this, "#SUrlSoap"); if(url != null) et_UrlSoap.setText(url); } // Load Method if(method == null || method.length() == 0){ method = Env.getContext(this, "#SMethod"); if(method != null) et_Method.setText(method); } // Name Space if(nameSpace == null || nameSpace.length() == 0){ nameSpace = Env.getContext(this, "#SNameSpace"); if(nameSpace != null) et_NameSpace.setText(nameSpace); } // Timeout if(timeout == null || timeout.length() == 0){ int timeoutInt = Env.getContextAsInt(this, "#Timeout"); timeout = String.valueOf(timeoutInt); et_Timeout.setText(timeout); } // Save SD ch_SaveSD.setChecked(Env.getContextAsBoolean(this, "#SaveSD")); lockFront(); } @Override public void onResume() { super.onResume(); lockFront(); } @Override public boolean aceptAction() { if(valid()) return true; return false; } @Override public boolean cancelAction() { return false; } @Override public boolean loadData() { return false; } }