mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-25 15:52:06 +01:00
xdata: add more helper methods to DataForm
This commit is contained in:
parent
8e1003723e
commit
e58e6fa75d
1 changed files with 65 additions and 0 deletions
|
@ -20,6 +20,7 @@ package org.jivesoftware.smackx.xdata.packet;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
@ -303,6 +304,20 @@ public class DataForm implements ExtensionElement {
|
||||||
return Collections.unmodifiableList(extensionElements);
|
return Collections.unmodifiableList(extensionElements);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the form type from the hidden form type field.
|
||||||
|
*
|
||||||
|
* @return the form type or <code>null</code> if this form has none set.
|
||||||
|
* @since 4.4.0
|
||||||
|
*/
|
||||||
|
public String getFormType() {
|
||||||
|
FormField formTypeField = getHiddenFormTypeField();
|
||||||
|
if (formTypeField == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return formTypeField.getFirstValue();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the hidden FORM_TYPE field or null if this data form has none.
|
* Returns the hidden FORM_TYPE field or null if this data form has none.
|
||||||
*
|
*
|
||||||
|
@ -364,6 +379,56 @@ public class DataForm implements ExtensionElement {
|
||||||
return stanzaView.getExtension(DataForm.class);
|
return stanzaView.getExtension(DataForm.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the data form with the given form type from a stanza view.
|
||||||
|
*
|
||||||
|
* @param stanzaView the stanza view to retrieve the data form from
|
||||||
|
* @param formType the form type
|
||||||
|
* @return the retrieved data form or <code>null</code> if there is no matching one
|
||||||
|
* @since 4.4.0
|
||||||
|
*/
|
||||||
|
public static DataForm from(StanzaView stanzaView, String formType) {
|
||||||
|
List<DataForm> dataForms = stanzaView.getExtensions(DataForm.class);
|
||||||
|
return from(dataForms, formType);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the first matching data form with the given form type from the given collection of data forms.
|
||||||
|
*
|
||||||
|
* @param dataForms the collection of data forms
|
||||||
|
* @param formType the form type to match for
|
||||||
|
* @return the first matching data form or <code>null</code> if there is none
|
||||||
|
* @since 4.4.0
|
||||||
|
*/
|
||||||
|
public static DataForm from(Collection<DataForm> dataForms, String formType) {
|
||||||
|
for (DataForm dataForm : dataForms) {
|
||||||
|
if (formType.equals(dataForm.getFormType())) {
|
||||||
|
return dataForm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the first matching data form with the given form type from the given collection.
|
||||||
|
*
|
||||||
|
* @param dataForms the collection of data forms
|
||||||
|
* @param formType the form type to match for
|
||||||
|
* @return the removed data form or <code>null</code> if there was none removed
|
||||||
|
* @since 4.4.0
|
||||||
|
*/
|
||||||
|
public static DataForm remove(Collection<DataForm> dataForms, String formType) {
|
||||||
|
Iterator<DataForm> it = dataForms.iterator();
|
||||||
|
while (it.hasNext()) {
|
||||||
|
DataForm dataForm = it.next();
|
||||||
|
if (formType.equals(dataForm.getFormType())) {
|
||||||
|
it.remove();
|
||||||
|
return dataForm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Represents the fields that will be returned from a search. This information is useful when
|
* Represents the fields that will be returned from a search. This information is useful when
|
||||||
|
|
Loading…
Reference in a new issue