/* This file is part of Project MAXS. MAXS and its modules is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. MAXS 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 for more details. You should have received a copy of the GNU General Public License along with MAXS. If not, see <http://www.gnu.org/licenses/>. */ package org.projectmaxs.shared.transport.transform; import java.util.Iterator; import java.util.List; import org.projectmaxs.shared.global.messagecontent.AbstractElement; import org.projectmaxs.shared.global.messagecontent.CommandHelp; import org.projectmaxs.shared.global.messagecontent.Contact; import org.projectmaxs.shared.global.messagecontent.ContactNumber; import org.projectmaxs.shared.global.messagecontent.Element; import org.projectmaxs.shared.global.messagecontent.FormatedText; import org.projectmaxs.shared.global.messagecontent.NewLine; import org.projectmaxs.shared.global.messagecontent.Sms; import org.projectmaxs.shared.global.messagecontent.Text; import org.projectmaxs.shared.global.util.DateTimeUtil; public class FormatedTextTransformator { protected static void toFormatedText(AbstractElement element, List<FormatedText> ft) { if (element instanceof Contact) { toFormatedText((Contact) element, ft); } else if (element instanceof ContactNumber) { toFormatedText((ContactNumber) element, ft); } else if (element instanceof Element) { toFormatedText((Element) element, ft); } else if (element instanceof Sms) { toFormatedText((Sms) element, ft); } else if (element instanceof Text) { toFormatedText((Text) element, ft); } else if (element instanceof CommandHelp) { toFormatedText((CommandHelp) element, ft); } else { throw new IllegalStateException("Unknown sublcass of AbstractElement"); } } private static void toFormatedText(Contact contact, List<FormatedText> ft) { ft.add(FormatedText.bold(contact.getDisplayName())); ft.add(NewLine.getInstance()); for (ContactNumber number : contact.getNumbers()) toFormatedText(number, ft); } private static void toFormatedText(ContactNumber contactNumber, List<FormatedText> ft) { ft.add(FormatedText.italic(TypeTransformator.fromNumberType(contactNumber.getType()))); if (contactNumber.getLabel() != null) ft.add(FormatedText.from(" (" + contactNumber.getLabel() + ")")); ft.add(FormatedText.from(": " + contactNumber.getNumber())); ft.add(NewLine.getInstance()); } private static void toFormatedText(Element element, List<FormatedText> ft) { if (!element.isHumanReadable()) return; toFormatedText(element.getHumanReadableName(), ft); Iterator<AbstractElement> it = element.getChildElementIterator(); while (it.hasNext()) toFormatedText(it.next(), ft); } private static void toFormatedText(Sms sms, List<FormatedText> ft) { ft.add(FormatedText.from(TypeTransformator.fromSMSType(sms.getType()))); ft.add(FormatedText.SINGLE_SPACE); ft.add(FormatedText.bold(sms.getContact())); ft.add(FormatedText.SINGLE_SPACE); ft.add(FormatedText.italic(DateTimeUtil.toFullDate(sms.getDate()))); ft.add(FormatedText.from(": ")); ft.add(FormatedText.from(sms.getBody())); ft.add(NewLine.getInstance()); } private static void toFormatedText(Text text, List<FormatedText> ft) { ft.addAll(text.getTexts()); } private static void toFormatedText(CommandHelp commandHelp, List<FormatedText> ft) { StringBuilder sb = new StringBuilder(); sb.append(commandHelp.mCommand); sb.append(' '); sb.append(commandHelp.mSubCommand); sb.append(TypeTransformator.toCommandArg(commandHelp)); ft.add(FormatedText.bold(sb)); sb = new StringBuilder(); sb.append(" - "); sb.append(commandHelp.mHelp); ft.add(FormatedText.from(sb)); ft.add(NewLine.getInstance()); } }