package org.sana.android.procedure; import java.net.URISyntaxException; import java.text.SimpleDateFormat; import org.sana.android.Constants; import org.sana.android.app.Preferences; import org.sana.android.content.core.ObservationWrapper; import org.sana.android.provider.Observations; import org.w3c.dom.Node; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.text.TextUtils; import android.util.Log; import android.view.View; /** * TextElement is an answer-less ProcedureElement that represents a block of * text on a procedure page. * <p/> * <ul type="none"> * <li><b>Clinical Use</b>Wherever displaying a block of text may be useful.</li> * <li><b>Collects</b></li>Nothing. Displays only.</li> * </ul> * * @author Sana Dev Team */ public class HiddenElement extends ProcedureElement { public static final String TAG = HiddenElement.class.getSimpleName(); /** {@inheritDoc} */ @Override protected View createView(Context c) { return encapsulateQuestion(c, null); } /** {@inheritDoc} */ @Override public ElementType getType() { return ElementType.HIDDEN; } /** {@inheritDoc} */ @Override public String getAnswer() { Log.i(TAG, "getAnswer()"); // set the default value if answer is empty if(TextUtils.isEmpty(answer) && hasDefault()){ Log.d(TAG, "\tUsing default value"); setAnswer(getDefault()); } return answer; } public void setAnswer(String answer){ Log.i(TAG, "setAnswer(String)"); // set the default value if answer is empty if(TextUtils.isEmpty(answer) && hasDefault()){ Log.w(TAG, "\tUsing default value"); answer = getDefault(); } this.answer = answer; } @Override public boolean isViewActive(){ return false; } public Intent getIntent(){ Intent intent = null; try { intent = Intent.parseUri(action, Intent.URI_INTENT_SCHEME); intent.putExtra(Observations.Contract.ID, id); intent.putExtra(Observations.Contract.CONCEPT, concept); } catch (URISyntaxException e) { e.printStackTrace(); } return intent; } public String getDefault(){ Log.i(TAG, "getDefault()"); final SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); StringBuilder sb = new StringBuilder(); String val = super.getDefault(); for(String str:val.split(":")){ if(str.length() > 1 && str.startsWith("@")){ str = str.substring(1); if(str.compareTo("DEVICE") == 0){ // Get device id str = Preferences.getString(getContext(), Constants.PREFERENCE_PHONE_NAME); } else if (str.compareTo("NOW") == 0){ // formats current date time as 'yyyyMMddHHmmss' str = df.format(new java.util.Date()); } } sb.append(str); } return sb.toString(); } /** Default constructor */ private HiddenElement(String id, String question, String answer, String concept, String figure, String audio) { super(id, question, answer, concept, figure, audio); } /** @see ProcedureElement#fromXML(String, String, String, String, String, String, Node) */ public static HiddenElement fromXML(String id, String question, String answer, String concept, String figure, String audio, Node node) throws ProcedureParseException { HiddenElement el = new HiddenElement(id, question, answer, concept, figure, audio); ProcedureElement.parseOptionalAttributes(node, el); return el; } }