package com.bluevia.android.directory.parser; import java.io.IOException; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import android.util.Log; import com.bluevia.android.commons.parser.ParseException; import com.bluevia.android.directory.data.AccessInfo; import com.bluevia.android.directory.data.PersonalInfo; import com.bluevia.android.directory.data.Profile; import com.bluevia.android.directory.data.TerminalInfo; import com.bluevia.android.directory.data.UserInfo; /** * Xml parser for XmlDirectoryUserInfo entities. * * @author Telefonica I+D * */ class XmlDirectoryUserInfoParser implements DirectoryEntityParser { private static final String TAG = "XmlDirectoryTerminalInfoParser"; public UserInfo parse(XmlPullParser parser) throws ParseException { UserInfo userInfo = new UserInfo(); int eventType; try { eventType = parser.next(); Log.e(TAG, "Expected event START_TAG: Actual event: " + XmlPullParser.TYPES[eventType]); } catch (XmlPullParserException xppe) { throw new ParseException("Could not read next event.", xppe); } catch (IOException ioe) { throw new ParseException("Could not read next event.", ioe); } while (eventType != XmlPullParser.END_DOCUMENT){ String nameSpace = parser.getName(); switch (eventType){ case XmlPullParser.END_TAG: if (XmlConstants.USERINFO.equals(nameSpace)) { Log.e(TAG, "Entro en USERINFO tag name is " + nameSpace); return userInfo; } break; case XmlPullParser.START_TAG: if(nameSpace.equals(XmlConstants.ACCESSINFO)){ AccessInfo userAccessInfo = new XmlDirectoryAccessInfoParser().parse(parser); if (userAccessInfo != null) userInfo.setAccessInfo(userAccessInfo); } if(nameSpace.equals(XmlConstants.PROFILE)){ Profile userProfile = new XmlDirectoryProfileParser().parse(parser); if (userProfile != null) userInfo.setProfile(userProfile); } if(nameSpace.equals(XmlConstants.TERMINALINFO)){ TerminalInfo userTerminalInfo = new XmlDirectoryTerminalInfoParser().parse(parser); if (userTerminalInfo != null) userInfo.setTerminalInfo(userTerminalInfo); } if(nameSpace.equals(XmlConstants.PERSONALINFO)){ PersonalInfo personalInfo = new XmlDirectoryPersonalInfoParser().parse(parser); if (personalInfo != null) userInfo.setPersonalInfo(personalInfo); } } try{ eventType = parser.next(); } catch (XmlPullParserException e) { throw new ParseException("Could not read next event.", e); } catch (IOException e) { throw new ParseException("Could not read next event.", e); } } return null; } }