/* This file is part of SlumDroid <https://code.google.com/p/slumdroid/>. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 * 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 <http://www.gnu.org/licenses/gpl-3.0.txt> * for more details. * * Copyright (C) 2013-2015 Gennaro Imparato */ package it.slumdroid.droidmodels.model; import static it.slumdroid.droidmodels.model.InputType.TYPE_CLASS_DATETIME; import static it.slumdroid.droidmodels.model.InputType.TYPE_CLASS_NUMBER; import static it.slumdroid.droidmodels.model.InputType.TYPE_CLASS_PHONE; import static it.slumdroid.droidmodels.model.InputType.TYPE_CLASS_TEXT; import static it.slumdroid.droidmodels.model.InputType.TYPE_MASK_CLASS; import static it.slumdroid.droidmodels.model.InputType.TYPE_MASK_FLAGS; import static it.slumdroid.droidmodels.model.InputType.TYPE_MASK_VARIATION; import static it.slumdroid.droidmodels.model.InputType.TYPE_NUMBER_FLAG_DECIMAL; import static it.slumdroid.droidmodels.model.InputType.TYPE_NUMBER_FLAG_SIGNED; import static it.slumdroid.droidmodels.model.InputType.TYPE_NUMBER_VARIATION_PASSWORD; import static it.slumdroid.droidmodels.model.InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE; import static it.slumdroid.droidmodels.model.InputType.TYPE_TEXT_FLAG_MULTI_LINE; import static it.slumdroid.droidmodels.model.InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS; import static it.slumdroid.droidmodels.model.InputType.TYPE_TEXT_VARIATION_PASSWORD; import static it.slumdroid.droidmodels.model.InputType.TYPE_TEXT_VARIATION_PERSON_NAME; import static it.slumdroid.droidmodels.model.InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS; import static it.slumdroid.droidmodels.model.InputType.TYPE_TEXT_VARIATION_URI; import static it.slumdroid.droidmodels.model.InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD; // TODO: Auto-generated Javadoc /** * The Class WidgetType. */ public class WidgetType { /** The type. */ private final int type; /** The name lower case. */ private String nameLowerCase; /** The value lower case. */ private String valueLowerCase; /** * Instantiates a new widget type. * * @param type the type * @param name the name * @param value the value */ public WidgetType(int type, String name, String value) { this.type = new Integer(type); this.nameLowerCase = new String(name.toLowerCase()); this.valueLowerCase = new String(value.toLowerCase()); } /** * Convert. * * @return the string */ public String convert() { String output = ""; if (isText()) { output = "Text"; if (isTextMultiline()) output += ", Multiline"; if (isTextEmailAddress()) { output += ", EmailAddress"; } else if (isTextPostalAddress()) { output += ", PostalAddress"; } else if (isTextURI()) { output += ", URI"; } else if (isPassword()){ output += ", Password"; } else if (isPersonName()){ output += ", PersonName"; } else if (this.nameLowerCase.contains("isbn")){ output += ", ISBN"; } else if (this.nameLowerCase.contains("credit") && this.nameLowerCase.contains("card")){ output += ", CreditCard"; } } else if (isNumber()) { output = "Number"; if (isNumberSigned()) { output += ", Signed"; } if (isNumberDecimal()) { output += ", Decimal"; } if (isNumberPassword()){ output += ", NumberPassword"; } } else if (isDatetime()) { output = "DateTime"; } else if (isPhone()) { output = "Phone"; } return output; } /** * Checks if is text. * * @return true, if is text */ private boolean isText() { if ((this.type & TYPE_MASK_CLASS) != TYPE_CLASS_TEXT) { return false; } return true; } /** * Checks if is number. * * @return true, if is number */ private boolean isNumber() { if ((this.type & TYPE_MASK_CLASS) != TYPE_CLASS_NUMBER) { return false; } return true; } /** * Checks if is datetime. * * @return true, if is datetime */ private boolean isDatetime() { if ((this.type & TYPE_MASK_CLASS) != TYPE_CLASS_DATETIME) { return false; } return true; } /** * Checks if is phone. * * @return true, if is phone */ private boolean isPhone() { if ((this.type & TYPE_MASK_CLASS) != TYPE_CLASS_PHONE) { return false; } return true; } /** * Checks if is text multiline. * * @return true, if is text multiline */ private boolean isTextMultiline() { if (!isText() || ((this.type & TYPE_MASK_FLAGS) != TYPE_TEXT_FLAG_MULTI_LINE) || ((this.type & TYPE_MASK_FLAGS) != TYPE_TEXT_FLAG_IME_MULTI_LINE)) { return false; } return true; } /** * Checks if is text email address. * * @return true, if is text email address */ private boolean isTextEmailAddress() { if (this.nameLowerCase.contains("e-mail") || this.nameLowerCase.contains("mail") || (this.valueLowerCase.contains("@") && this.valueLowerCase.contains("."))) return true; if (!isText() || ((this.type & TYPE_MASK_VARIATION) != TYPE_TEXT_VARIATION_EMAIL_ADDRESS)) { return false; } return true; } /** * Checks if is text postal address. * * @return true, if is text postal address */ private boolean isTextPostalAddress() { if (!isText() || ((this.type & TYPE_MASK_VARIATION) != TYPE_TEXT_VARIATION_POSTAL_ADDRESS)) { return false; } return true; } /** * Checks if is text uri. * * @return true, if is text uri */ private boolean isTextURI() { if (this.valueLowerCase.contains("http") || this.valueLowerCase.contains("www") || this.nameLowerCase.contains("site") || this.nameLowerCase.contains("server") || this.nameLowerCase.contains("url")) return true; if (!isText() || ((this.type & TYPE_MASK_VARIATION) != TYPE_TEXT_VARIATION_URI)) { return false; } return true; } /** * Checks if is person name. * * @return true, if is person name */ private boolean isPersonName() { if (!isText() || ((this.type & TYPE_MASK_VARIATION) != TYPE_TEXT_VARIATION_PERSON_NAME)) { return false; } return true; } /** * Checks if is password. * * @return true, if is password */ private boolean isPassword() { if (!isText() || ((this.type & TYPE_MASK_VARIATION) != TYPE_TEXT_VARIATION_PASSWORD) || ((this.type & TYPE_MASK_VARIATION) != TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) ) { return false; } return true; } /** * Checks if is number signed. * * @return true, if is number signed */ private boolean isNumberSigned() { if (!isNumber() || ((this.type & TYPE_MASK_FLAGS) != TYPE_NUMBER_FLAG_SIGNED)) { return false; } return true; } /** * Checks if is number decimal. * * @return true, if is number decimal */ private boolean isNumberDecimal() { if (!isNumber() || ((this.type & TYPE_MASK_FLAGS) != TYPE_NUMBER_FLAG_DECIMAL)) { return false; } return true; } /** * Checks if is number password. * * @return true, if is number password */ private boolean isNumberPassword() { if (!isNumber() || ((this.type & TYPE_MASK_VARIATION) != TYPE_NUMBER_VARIATION_PASSWORD)) { return false; } return true; } }