package net.basilwang.sever; import java.util.ArrayList; import java.util.Calendar; import net.basilwang.SliderMenuFragment; import net.basilwang.dao.SemesterService; import net.basilwang.entity.Semester; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import android.os.AsyncTask; public class RequestNewMessage extends AsyncTask<Object, Object, ArrayList<Message>> { private MessageService messageService; private SemesterService semeter; SliderMenuFragment menuFragment; private String token; public RequestNewMessage(SliderMenuFragment sliderMenu) { this.menuFragment = sliderMenu; } @Override protected void onPostExecute(ArrayList<Message> result) { int maxId = messageService.selectMaxId(); int num=0; for (int i = 0; i < result.size(); i++) { result.get(i).getMessageContent() .setMessageId(result.get(i).getId()); result.get(i).getMessageContent() .setCreateTime(result.get(i).getCreateTime()); result.get(i).getMessageContent().setIsRead(0); if (result.get(i).getMessageContent().getMessageId() > maxId) { messageService.save(result.get(i).getMessageContent()); num++; } updateSermerBeginByMessage(result.get(i).getMessageContent() .getContent()); if(result.get(i).getMessageContent().getContent().equals("教务系统异常,暂时关闭课表、成绩下载功能")){ menuFragment.isUnusual(1); } if(result.get(i).getMessageContent().getContent().equals("教务系统恢复了,可以下课表、查成绩了")){ menuFragment.isUnusual(0); } } menuFragment.refresh(num); super.onPostExecute(result); } private void updateSermerBeginByMessage(String messageContent) { int semeserStart = 16; int semeserEnd = 49; int size = messageContent.indexOf(":") + 1; if (messageContent.length() > 16) { if (messageContent.substring(0, size).equals("系统已自动将您的学期时间设置为:")) { updateSemesterBegin(messageContent.substring(semeserStart, semeserEnd)); } } } @Override protected ArrayList<Message> doInBackground(Object... params) { String url = (String) params[0]; messageService = (MessageService) params[1]; semeter = (SemesterService) params[2]; token=(String)params[3]; String result; ArrayList<Message> list1 = new ArrayList<Message>(); HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(url); try { post.addHeader("X-Token", token); HttpResponse response = client.execute(post); if (response.getStatusLine().getStatusCode() == 200) { result=filter(EntityUtils.toString(response.getEntity())); list1 = jsonData(result); } } catch (Exception e) { } return list1; } public String filter(String s){ String s1 = s.replace("\\", ""); String s2 = s1.substring(1, s1.length() - 1); String s3 = s2.replace(" ", ""); String result = s3.replace("rn", ""); return result; } public ArrayList<Message> jsonData(String str) { ArrayList<Message> list2 = JSON.parseObject(str, new TypeReference<ArrayList<Message>>() { }); return list2; } public void updateSemesterBegin(String begin) { Calendar bcal = Calendar.getInstance(); Calendar ecal = Calendar.getInstance(); int bYear = Integer.parseInt(begin.substring(0, 4)); int bMonth = Integer.parseInt(begin.substring(5, 7)) - 1; int bDay = Integer.parseInt(begin.substring(8, 10)); int eYear = Integer.parseInt(begin.substring(11, 15)); int eMonth = Integer.parseInt(begin.substring(16, 18)) - 1; int eDay = Integer.parseInt(begin.substring(19, 21)); String name = begin.substring(22, 33); bcal.set(bYear, bMonth, bDay); ecal.set(eYear, eMonth, eDay); Semester sem = new Semester(); sem.setBeginDate(bcal.getTime().getTime()); sem.setEndDate(ecal.getTime().getTime()); sem.setName(name); semeter.updateBeginAndEndDataOfSemester(sem); } }