/** * */ package com.photoshare.service.users; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory; import org.xmlpull.v1.XmlSerializer; import android.util.Xml; import com.photoshare.common.XMLParser; import com.photoshare.utils.FileTools; import com.photoshare.utils.Utils; /** * @author Aron * * This class is used to write the key-value pairs from the JavaBean * {@link UserInfo} into XML File, and read the XML File into JavaBean * {@link UserInfo} * */ public class UserInfoReader implements XMLParser<UserInfo> { public static final String PATH = Utils.APP_NAME + File.separator + Utils.DIR_HOME + File.separator + Utils.DIR_USER_INFO; public static final String FILE_NAME = "userinfo.xml"; /* * (non-Javadoc) * * @see com.photoshare.common.XMLParser#loadFromXML(java.lang.String, * java.lang.String) */ public UserInfo loadFromXML(String path, String file) throws Exception { UserInfo info = new UserInfo(); try { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser parser = factory.newPullParser(); InputStream stream = FileTools.ReadFile(path, file); parser.setInput(stream, Utils.ENCODE_UTF_8); int eventType = parser.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { switch (eventType) { case XmlPullParser.START_DOCUMENT: break; case XmlPullParser.START_TAG: if (parser.getName().equals(UserInfo.KEY_BIO)) { info.setBio(parser.nextText()); } else if (parser.getName().equals(UserInfo.KEY_BIRTHDAY)) { info.setBirthday(parser.nextText()); } else if (parser.getName().equals(UserInfo.KEY_GENDER)) { info.setGender(parser.nextText()); } else if (parser.getName().equals( UserInfo.KEY_LARGE_HEAD_URL)) { info.setLargeurl(parser.nextText()); } else if (parser.getName().equals( UserInfo.KEY_MIDDLE_HEAD_URL)) { info.setHeadurl(parser.nextText()); } else if (parser.getName().equals(UserInfo.KEY_NAME)) { info.setName(parser.nextText()); } else if (parser.getName().equals( UserInfo.KEY_PHONE_NUMBER)) { info.setPhoneNumber(parser.nextText()); } else if (parser.getName().equals(UserInfo.KEY_PHOTOS_CNT)) { info.setPhotosCnt(Integer.parseInt(parser.nextText())); } else if (parser.getName().equals(UserInfo.KEY_PRIVACY)) { info.setPrivacy(Boolean.parseBoolean(parser.nextText())); } else if (parser.getName().equals( UserInfo.KEY_TINY_HEAD_URL)) { info.setTinyurl(parser.nextText()); } else if (parser.getName().equals(UserInfo.KEY_UID)) { info.setUid(Integer.parseInt(parser.nextText())); } else if (parser.getName().equals(UserInfo.KEY_WEBSITE)) { info.setWebsite(parser.nextText()); } else if (parser.getName().equals(UserInfo.KEY_MAIL)) { info.setMail(parser.nextText()); } else if (parser.getName().equals(UserInfo.KEY_LIKES_CNT)) { info.setLikesCnt(Long.parseLong(parser.nextText())); } else if (parser.getName() .equals(UserInfo.KEY_PSEUDO_NAME)) { info.setPseudoName(parser.nextText()); } break; case XmlPullParser.END_TAG: if ("person".equals(parser.getName())) { } break; } eventType = parser.next(); } } catch (NumberFormatException e) { throw new Exception(e); } catch (XmlPullParserException e) { throw new Exception(e); } catch (IOException e) { throw new Exception(e); } return info; } /* * (non-Javadoc) * * @see com.photoshare.common.XMLParser#loadListFromXML(java.lang.String, * java.lang.String) */ public List<UserInfo> loadListFromXML(String path, String file) throws Exception { // TODO Auto-generated method stub return null; } /* * (non-Javadoc) * * @see com.photoshare.common.XMLParser#WriteXML(java.lang.String, * java.lang.String, java.lang.Object) */ public void WriteXML(String path, String file, UserInfo info) throws Exception { try { OutputStream outStream = FileTools.OpenFile(path, file); OutputStreamWriter outStreamWriter = new OutputStreamWriter( outStream, "UTF-8"); BufferedWriter writer = new BufferedWriter(outStreamWriter); XmlSerializer serializer = Xml.newSerializer(); serializer.setOutput(writer); // <?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?> serializer.startDocument(Utils.ENCODE_UTF_8, true); serializer.startTag("", UserInfo.KEY_UID); serializer.text("" + info.getUid()); serializer.endTag("", UserInfo.KEY_UID); serializer.startTag("", UserInfo.KEY_NAME); serializer.text(info.getName()); serializer.endTag("", UserInfo.KEY_NAME); serializer.startTag("", UserInfo.KEY_PSEUDO_NAME); serializer.text(info.getPseudoName()); serializer.endTag("", UserInfo.KEY_PSEUDO_NAME); serializer.startTag("", UserInfo.KEY_MAIL); serializer.text(info.getMail()); serializer.endTag("", UserInfo.KEY_MAIL); serializer.startTag("", UserInfo.KEY_BIRTHDAY); serializer.text(info.getBirthday()); serializer.endTag("", UserInfo.KEY_BIRTHDAY); serializer.startTag("", UserInfo.KEY_BIO); serializer.text(info.getBio()); serializer.endTag("", UserInfo.KEY_BIO); serializer.startTag("", UserInfo.KEY_GENDER); serializer.text(info.getGender()); serializer.endTag("", UserInfo.KEY_GENDER); serializer.startTag("", UserInfo.KEY_WEBSITE); serializer.text(info.getWebsite()); serializer.endTag("", UserInfo.KEY_WEBSITE); serializer.startTag("", UserInfo.KEY_IS_FOLLOWING); serializer.text(info.isFollowing() + ""); serializer.endTag("", UserInfo.KEY_IS_FOLLOWING); serializer.startTag("", UserInfo.KEY_FOLLOWER_CNT); serializer.text(info.getFollowersCnt() + ""); serializer.endTag("", UserInfo.KEY_FOLLOWER_CNT); serializer.startTag("", UserInfo.KEY_FOLLOWING_CNT); serializer.text(info.getFollowingCnt() + ""); serializer.endTag("", UserInfo.KEY_FOLLOWING_CNT); serializer.startTag("", UserInfo.KEY_LARGE_HEAD_URL); serializer.text(info.getLargeurl()); serializer.endTag("", UserInfo.KEY_LARGE_HEAD_URL); serializer.startTag("", UserInfo.KEY_MIDDLE_HEAD_URL); serializer.text(info.getHeadurl()); serializer.endTag("", UserInfo.KEY_MIDDLE_HEAD_URL); serializer.startTag("", UserInfo.KEY_PRIVACY); serializer.text("" + info.isPrivacy()); serializer.endTag("", UserInfo.KEY_PRIVACY); serializer.startTag("", UserInfo.KEY_TINY_HEAD_URL); serializer.text(info.getTinyurl()); serializer.endTag("", UserInfo.KEY_TINY_HEAD_URL); serializer.startTag("", UserInfo.KEY_LIKES_CNT); serializer.text("" + info.getLikesCnt()); serializer.endTag("", UserInfo.KEY_LIKES_CNT); serializer.endDocument(); writer.flush(); writer.close(); } catch (FileNotFoundException e) { throw new Exception(e); } catch (UnsupportedEncodingException e) { throw new Exception(e); } catch (IOException e) { throw new Exception(e); } } /* * (non-Javadoc) * * @see com.photoshare.common.XMLParser#WriteXML(java.lang.String, * java.lang.String, java.util.List) */ public void WriteXML(String path, String file, List<UserInfo> types) throws Exception { // TODO Auto-generated method stub } /* * (non-Javadoc) * * @see com.photoshare.common.XMLParser#loadFromXML(java.lang.Object, * java.lang.String, java.lang.String) */ public void loadFromXML(UserInfo obj, String path, String file) throws Exception { obj = loadFromXML(path, file); } /* * (non-Javadoc) * * @see com.photoshare.common.XMLParser#loadListFromXML(java.util.List, * java.lang.String, java.lang.String) */ public void loadListFromXML(List<UserInfo> list, String path, String file) throws Exception { if (list != null) { list.addAll(loadListFromXML(path, file)); } } }