源代码-前30页.docx_第1页
源代码-前30页.docx_第2页
源代码-前30页.docx_第3页
源代码-前30页.docx_第4页
源代码-前30页.docx_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

鼎华文书档案扫描管理系统软件package com.kbn.mf.message;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import org.json.JSONException;import org.json.JSONObject;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.text.Editable;import android.text.TextWatcher;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.EditText;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import com.kbn.mf.NetHospitalMainActivity;import hospital.R;import com.kbn.mf.adapter.MessageAdapter;/* * 文书档案 * */public class MessageActivity extends Activity private static final String TAG = LogConsts.TAG_PREFIX + MessageActivity;private static final int PUSHMSG_RECEIVE_SUCCESS = 0; / 扫描文书private List listBasicData = new ArrayList();/ 存放原始数据;private ArrayList list = new ArrayList();/ 存放临时数据private ListView listmessage;/ 消息列表private EditText et_search; / 搜索框private MessageAdapter adapter = null;public TcpMananger tcpManager = null;/ tcp服务管理private UserInfo userinfo = null;/ 用户信息private MsgTcpCallback callback;/ tcp消息回调private MsgSummaryManager manager = null;/ 消息推送数据库管理对象private HashMap mapMessagInfo = null;private static final String ActionName_TCPCLOSE = MessageActivity.MsgBroadCastReceiver.TCPClose;private static final String ActionName = MessageActivity.MsgBroadCastReceiver;private static final String CleanEditext = clean.EdittextBroadCastReceiver;/清空文本框private MsgBroadCastReceiver myBroadcase; / 由于tab控件中的Activity响应不了onResumeprivate Handler mhandler = new Handler() Overridepublic void handleMessage(Message msg) / TODO Auto-generated method stub/ super.handleMessage(msg);switch (msg.what) case PUSHMSG_RECEIVE_SUCCESS: / 扫描文书后,刷新页面listBasicData = manager.getMsgSummary(ToolHelp.getInstance().getHospitalInfo().getHospitalID(), ToolHelp.getInstance().getUserInfo().getiUserID();adapter = new MessageAdapter(MessageActivity.this,listBasicData, mapMessagInfo);listmessage.setAdapter(adapter);break;default:break;Overrideprotected void onCreate(Bundle savedInstanceState) / TODO Auto-generated method stubsuper.onCreate(savedInstanceState);Logcat.i(TAG, 我的消息oncreate();setContentView(R.layout.page_message);myBroadcase = new MsgBroadCastReceiver();IntentFilter filter = new IntentFilter();/ 创建IntentFilter对象filter.addAction(ActionName);filter.addAction(ActionName_TCPCLOSE);filter.addAction(CleanEditext);registerReceiver(myBroadcase, filter);/ 注册Broadcast Receiver/ 初始化tcp消息回调函数callback = new MsgTcpCallback();/ 初始化数据库管理对象manager = new MsgSummaryManager(MessageActivity.this);/ 解析消息类型文件String xmlFilePath = NethospitalUtil.getParseXmlPath(this,NethospitalConsts.MSGTYPE_FILENAME);mapMessagInfo = NethospitalUtil.getMessageXmlParse(this, xmlFilePath);/ 获得控件的声明listmessage = (ListView) findViewById(R.id.list_message);et_search = (EditText) this.findViewById(R.id.et_search);/ 搜索框的自动搜索-文本的观察着et_search.addTextChangedListener(new TextWatcher() / 改变之后Overridepublic void afterTextChanged(Editable s) if (s.toString() != null & !s.toString().equals() String searchChars = s.toString().trim();if (list != null) list.clear();/ 清空一下if (listBasicData != null & listBasicData.size() 0) / 获得文书档案列表的数据的数据不为空for (MsgSummary messageinfo : listBasicData) / messageinfo.getArchiveType()long ArchiveType = messageinfo.getArchiveType();MessageTitle messageTitle = mapMessagInfo.get(Integer.valueOf(int) ArchiveType);/ 判断titleName 中是否包含 searchCharsif (Tools.containsAny(messageTitle.getName(), searchChars) list.add(messageinfo);/ 如果匹配添加进来listmessage.setAdapter(new MessageAdapter(MessageActivity.this, list,mapMessagInfo); else / 加载原始数据listmessage.setAdapter(adapter);/ 改变之前Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) / TODO Auto-generated method stub/ 改变Overridepublic void onTextChanged(CharSequence s, int start, int before,int count) / TODO Auto-generated method stub);/ 设置监听listmessage.setOnItemClickListener(new OnItemClickListener() Overridepublic void onItemClick(AdapterView adapter, View view,int position, long id) MsgSummary msgifno = (MsgSummary) adapter.getAdapter().getItem(position);Intent intent = new Intent(MessageActivity.this,ItiemMessageActivity.class);String time = Util.formatDate(msgifno.getArchiveTime();TextView textView = (TextView) view.findViewById(R.id.message_item_title);intent.putExtra(title, textView.getText().toString().trim();intent.putExtra(time, time.substring(5);intent.putExtra(context, msgifno.getDescription();intent.putExtra(desinfo, msgifno.getViewUrl();intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);startActivity(intent);/ 更新未读标签为已读并刷新页面manager.UpdateColumnRead(msgifno);mhandler.sendEmptyMessage(PUSHMSG_RECEIVE_SUCCESS); / 刷新页面NetHospitalMainActivity.stHandler.sendEmptyMessage(NetHospitalMainActivity.NOTREAD_MSG_NUM);/ 刷新条数);Overrideprotected void onResume() / TODO Auto-generated method stubsuper.onResume();Logcat.i(TAG, onResume.);if (ToolHelp.getInstance().getHospitalInfo() = null) listBasicData = new ArrayList(); else listBasicData = manager.getMsgSummary(ToolHelp.getInstance().getHospitalInfo().getHospitalID(), ToolHelp.getInstance().getUserInfo().getiUserID();adapter = new MessageAdapter(this, listBasicData, mapMessagInfo);/ 设置适配器listmessage.setAdapter(adapter);/ 获取未读消息的数量;通过handle 发送给NetHospitalMainActivity显示Message message = new Message();message.what = NetHospitalMainActivity.NOTREAD_MSG_NUM;NetHospitalMainActivity.stHandler.sendMessage(message);/* * 接收从其他页面返回时响应不到onResume */public class MsgBroadCastReceiver extends BroadcastReceiver Overridepublic void onReceive(Context context, Intent intent) / TODO Auto-generated method stubif (intent.getAction().equals(ActionName) StartMessageServic(); else if (intent.getAction().equals(ActionName_TCPCLOSE) / StopMessageServic();else if(intent.getAction().equals(CleanEditext)/加载数据/Toast.makeText(getApplicationContext(), , 1).show();et_search.getText().clear();et_search.clearFocus();/ 关闭tcp服务public void StopMessageServic() unregisterReceiver(myBroadcase);if (tcpManager != null) tcpManager.stop();/ 开启tcp服务public void StartMessageServic() ServerInfo serverInfo = ToolHelp.getInstance().getServerInfo();if (serverInfo != null) String logData = StartMessageServic ip = + serverInfo.getIpAddress() + ,port =+ serverInfo.getPort();Logcat.i(TAG, logData);UserInfoManager usermanager = new UserInfoManager(MessageActivity.this);List listuser = usermanager.getUserInfo(ToolHelp.getInstance().getPhoneNum(), 1);if (listuser != null & listuser.size() != 0) userinfo = listuser.get(0);tcpManager = TcpMananger.getInstance();tcpManager.init(serverInfo.getIpAddress(),serverInfo.getPort(), 10000, callback);/ 请求连接验证/ 操作系统名字String osname = android + android.os.Build.VERSION.RELEASE;String version = getResources().getString(R.string.version);int index = version.lastIndexOf(.);version = version.substring(0, index);MsgPacket packet = new MsgPacket(NethospitalConsts.MSG_TYPE_CONNECTAUTH,0,NethospitalUtil.jsonConnectAuthen(serverInfo.getToken(), osname, getResources().getString(R.string.app_name1), version);tcpManager.addCommand(packet);public class MsgTcpCallback implements ITcpCallback Overridepublic void onReceived(byte data, boolean isEnd) / TODO Auto-generated method stubMsgParser msg = new MsgParser(data);msg.parsePacket();if (msg.getmMsgType().equals(NethospitalConsts.MSG_TYPE_REUTRNCONNECTAUTH) / 连接验证的回应(/sys/authen/reply)String jsonData = msg.getmData();JSONObject obj;try obj = new JSONObject(jsonData);int ResultCode = obj.getInt(ResultCode);String returnmessage = obj.getString(Description);/ String UserID = obj.getString(UserId);Logcat.i(TAG, push message recevie codemsg=+ returnmessage);if (ResultCode = 0) / 档案查询if (ToolHelp.getInstance().getHospitalInfo() = null) / 如果已经解除了绑定了才收到回调/ 直接returnreturn;/ 1消息数据库中没有消息/ 2消息数据库中有消息 但是小于10条/ 3消息数据库中有消息 但是超过10条List listMsgSummary = manager.getMsgSummary(ToolHelp.getInstance().getHospitalInfo().getHospitalID(),ToolHelp.getInstance().getUserInfo().getiUserID();String jsonQueryData;if (listMsgSummary = null| listMsgSummary.size() = 0) jsonQueryData = NethospitalUtil.jsonQueryMsgArchive(userinfo.getiUserID(),null, new Date(), 0); else jsonQueryData = NethospitalUtil.jsonQueryMsgArchive(userinfo.getiUserID(),listMsgSummary.get(0).getArchiveTime(),new Date(), 0);MsgPacket packet = new MsgPacket(NethospitalConsts.MSG_TYPE_QUERY_MEMBER_ACHIVER,userinfo.getiUserID(), jsonQueryData);tcpManager.addCommand(packet); catch (JSONException e) / TODO Auto-generated catch blocke.printStackTrace(); else if (msg.getmMsgType().equals(NethospitalConsts.MSG_TYPE_MEMBER_ACHIVE) Logcat.i(TAG, push message recevie one count!);if (ToolHelp.getInstance().getHospitalInfo() = null) / 如果已经解除了绑定了才收到回调/ 直接returnreturn;/ 消息推送String jsonData = msg.getmData();MsgSummary stMsgSummary = NethospitalUtil.parseJosnPushMessage(jsonData, ToolHelp.getInstance().getHospitalInfo().getHospitalID();if (stMsgSummary != null) / 推送消息一次只有一条/ 接收到web的消息推送manager = new MsgSummaryManager(MessageActivity.this);if (!stMsgSummary.getViewUrl().equals() String desinfo = NethospitalUtil.changeWebUri(ToolHelp.getInstance().getHospitalInfo().getMobileSiteUrl(), stMsgSummary.getViewUrl();Logcat.i(TAG, url: + desinfo);stMsgSummary.setViewUrl(desinfo);manager.saveMsgSummary(stMsgSummary);mhandler.sendEmptyMessage(PUSHMSG_RECEIVE_SUCCESS);/ 刷新页面Message mainmsg = Message.obtain();mainmsg.what = NetHospitalMainActivity.NOTREAD_MSG_NUM;NetHospitalMainActivity.stHandler.sendMessage(mainmsg); else if (msg.getmMsgType().equals(NethospitalConsts.MSG_TYPE_REPLY_MEMBER_ACHIVER_) if (ToolHelp.getInstance().getHospitalInfo() = null) / 如果已经解除了绑定了才收到回调/ 直接returnreturn;/ 主动获取,客户端收到web返回的消息集合String jsonData = msg.getmData();int count = new int1;List listMsgSummary = NethospitalUtil.parseQueryMsgArchive(jsonData, count, ToolHelp.getInstance().getHospitalInfo().getHospitalID();Logcat.i(TAG, get message recevie success,total msg count = + count0);if (listMsgSummary != null & listMsgSummary.size() != 0) / 每次主动获取10条/ 接收到web的消息推送manager = new MsgSummaryManager(MessageActivity.this);for (int i = 0; i listMsgSummary.size(); i+) if (!listMsgSummary.get(i).getViewUrl().equals() String desinfo = NethospitalUtil.changeWebUri(ToolHelp.getInstance().getHospitalInfo().getMobileSiteUrl(), listMsgSummary.get(i).getViewUrl();Logcat.i(TAG, url: + desinfo);listMsgSummary.get(i).setViewUrl(desinfo);manager.saveMsgSummary(listMsgSummary.get(i);mhandler.sendEmptyMessage(PUSHMSG_RECEIVE_SUCCESS); / 刷新页面Message mainmsg = Message.obtain();mainmsg.what = NetHospitalMainActivity.NOTREAD_MSG_NUM;NetHospitalMainActivity.stHandler.sendMessage(mainmsg);Overridepublic void onError(Exception e) / TODO Auto-generated method stubpackage com.kbn.mf.lib.log;import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.FilenameFilter;import java.text.DecimalFormat;import java.text.ParseException;import java.util.ArrayList;import java.util.Arrays;import java.util.Calendar;import java.util.Comparator;import java.util.Date;import java.util.List;import java.util.regex.Pattern;import com.kbn.mf.lib.utils.Util;import android.content.Context;import android.os.Environment;import android.util.Log;class LogSaver private static final String TAG = LogConsts.TAG_PREFIX + LogSaver;private static final String SAVE_LOG_THREAD_NAME = SaveLogThread;private LogDumper mLogDumper;private Context mContext;/* 当前日志文件计数。 */private int mFileCount = -1;/* 当前日志文件日期。 */private Date mFileDate = null;/* 日志文件比较器。 */private Comparator mFileComparator;/* 校验文件名是否符合规则的过滤器。 */private LogFilenameFilter mFileNameFilter;/* 日志文件名计数的格式化器。 */private DecimalFormat mFileCountFormat;/* 已排序的日志文件集合。 */private List mSortedLogFiles = null;LogSaver(Context context) mContext = context;String time = LogPrefs.getLatestLogTime(mContext);if (time = null) time = LogPrefs.LOG_FORMAT.format(new Date();LogPrefs.saveLatestLogTime(mContext, time);mLogDumper = new LogDumper(mContext, new TagFilter(), new TimeFilter(time);mFileNameFilter = new LogFilenameFilter();mFileCountFormat = new DecimalFormat(000);mFileComparator = new Comparator() public int compare(File lhs, File rhs) if (lhs = null & rhs = null) return 0; else if (lhs = null) return -1; else if (rhs = null) return 1; else return lhs.getName().compareToIgnoreCase(rhs.getName();/ 删除无效、过期、过量的日志文件deleteUselessLogFiles(new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator + LogConsts.DIR_PATH);public void save() if (!Util.checkSDCard() Log.v(TAG, SD card not mounted);return;File writeFile = null;try writeFile = getLatestLogFile(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + LogConsts.DIR_PATH); catch (IOException e) Log.e(TAG, Failed to get the lastest log file., e);if (writeFile = null) Log.v(TAG, No external storage);return;Log.v(TAG, saving log to: + writeFile.toString();final File logFile = writeFile;new Thread(new Runnable() public void run() BufferedWriter bw = null;try bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(logFile,true), LogConsts.CHARSET_NAME);bw.write(mLogDumper.dump(); catch (Exception e) Log.e(TAG, Failed to write the log info., e); finally try if (bw != null) bw.close();bw = null; catch (IOException e) Log.w(TAG, Failed to close the BufferedWriter., e);, SAVE_LOG_THREAD_NAME).start();/* * 获取日志文件夹中最新的日志文件对象。 * * param logDirPath * 文件夹路径。 * return * throws IOException */private File getLatestLogFile(String logDirPath) throws IOException File logDir = new File(logDirPath);if (!Util.createDirectory(logDir) return null;/ 检查日志文件夹并返回最新的日志文件对象File logFile = getCurLogFile(logDir, new Date();if (!logFile.exists() logFile.createNewFile();return logFile;/* * 检查当前日志文件是否符合配置要求,并返回最新的日志文件对象。 * * param logDir * 文件夹对象。 * param now * 当前时间。 * return 最新的日志文件对象。 */private File getCurLogFile(File logDir, Date now) if (logDir = null | !logDir.isDirectory() return null;/ 获取当前日志文件信息if (mSortedLogFiles = null) mSortedLogFiles = getCurLogFileList(logDir, now);/ 路径前部分String pathPrefix = logDir.getPath() + File.separator;/ 时间字符串String strNow = LogPrefs.FILE_FORMAT.format(now);String strFileDate = LogPrefs.FILE_FORMAT.format(mFileDate);/ 日期变化,删除过期日志文件if (strNpareToIgnoreCase(strFileDate) != 0) deleteExpiredLogFiles

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论