package de.espirit.firstspirit.access.store.sitestore;
import de.espirit.firstspirit.access.Language;
import de.espirit.firstspirit.access.editor.SiteStoreVariableValue;
import de.espirit.firstspirit.access.editor.value.InvalidValueException;
import de.espirit.firstspirit.access.store.Data;
import de.espirit.firstspirit.access.store.DataValue;
import de.espirit.firstspirit.access.store.ElementDeletedException;
import de.espirit.firstspirit.access.store.LockException;
import de.espirit.firstspirit.forms.FormField;
import de.espirit.firstspirit.forms.NoSuchFormFieldException;
/**
* Examples how to modify variables of SiteStoreFolder.
*
* @since 4.2.34
*/
public class SiteStoreFolderVariablesExample {
/**
* Example how to add a variable.
*
* @since 4.2.34
* @deprecated since 4.2.440 - see {@link #addVariable_FormData(SiteStoreFolder)} instead
*/
@Deprecated
public void addVariable(final SiteStoreFolder folder) throws ClassNotFoundException, IllegalAccessException, InstantiationException, InvalidValueException, LockException, ElementDeletedException {
final String variableName = "myVariable";
// 1. lock the folder
folder.setLock(true, false);
try {
// 2. retrieve Data (variables) from SiteStoreFolder
final Data data = folder.getData();
// 3. try to retrieve a DataValue (variable) with desired name
DataValue dataValue = data.get(variableName);
// 4. if a DataValue is existent, no new one can created using the desired name
if (dataValue != null) {
throw new IllegalArgumentException("Variable named " + variableName + " already existent!");
}
// 5. create new DataValue (variable)
dataValue = data.create(variableName, folder.getProject().getUserService(), null);
// 6. retrieve the EditorValue from DataValue
final SiteStoreVariableValue editor = (SiteStoreVariableValue) dataValue.getEditor();
// 7. set desired value for each language
for (final Language language : folder.getProject().getLanguages()) {
editor.set(language, "myValue");
}
// 8. don't forget to set changed data back to folder
folder.setData(data);
// 9. save changes and unlock the folder
folder.save("add variable", false);
} finally {
folder.setLock(false, false);
}
}
/**
* Example how to add a variable.
*
* @since 4.2.440
*/
public void addVariable_FormData(final SiteStoreFolder folder) throws LockException, ElementDeletedException {
final String variableName = "myVariable";
// 1. lock the folder
folder.setLock(true, false);
try {
// 2. retrieve FormData (variables) from SiteStoreFolder
final SiteStoreVariableFormData formData = folder.getFormData();
// 3. try to retrieve a DataValue (variable) with desired name
FormField<String> formField;
final Language masterLanguage = folder.getProject().getMasterLanguage();
try {
formField = formData.get(masterLanguage, variableName);
} catch (NoSuchFormFieldException e) {
formField = formData.createVariable(masterLanguage, variableName);
}
// 4. set new value
formField.set("myValue");
// 5. don't forget to set changed data back to folder
folder.setFormData(formData);
// 6. save changes and unlock the folder
folder.save("add variable", false);
} finally {
folder.setLock(false, false);
}
}
/**
* Example how to change a variables value.
*
* @since 4.2.34
* @deprecated since 4.2.440 - see {@link #setVariableValue_FormData(SiteStoreFolder)} instead
*/
@Deprecated
public void setVariableValue(final SiteStoreFolder folder) throws InvalidValueException, LockException, ElementDeletedException {
final String variableName = "myVariable";
// 1. lock the folder
folder.setLock(true, false);
try {
// 2. retrieve Data (variables) from SiteStoreFolder
final Data data = folder.getData();
// 3. try to retrieve a DataValue (variable) with desired name
final DataValue dataValue = data.get(variableName);
// 4. check existence of the DataValue (variable)
if (dataValue == null) {
throw new IllegalArgumentException("Variable named " + variableName + " doesn't exist!");
}
// 5. retrieve the EditorValue from DataValue
final SiteStoreVariableValue editor = (SiteStoreVariableValue) dataValue.getEditor();
// 6. set desired value for each language
for (final Language language : folder.getProject().getLanguages()) {
editor.set(language, "myNewValue");
}
// 7. don't forget to set changed data back to folder
folder.setData(data);
// 8. save changes and unlock the folder
folder.save("set variable value", false);
} finally {
folder.setLock(false, false);
}
}
/**
* Example how to change a variable value.
*
* @since 4.2.440
*/
public void setVariableValue_FormData(final SiteStoreFolder folder) throws InvalidValueException, LockException, ElementDeletedException {
final String variableName = "myVariable";
// 1. lock the folder
folder.setLock(true, false);
// 2. retrieve FormData (variables) from SiteStoreFolder
final SiteStoreVariableFormData formData = folder.getFormData();
try {
// 3. try to retrieve a form field with desired name
final FormField<String> field = formData.get(folder.getProject().getMasterLanguage(), variableName);
// 4. set new value
field.set("myNewValue");
// 5. don't forget to set changed formdata back to folder
folder.setFormData(formData);
// 6. save changes and unlock the folder
folder.save("set variable value", false);
} finally {
folder.setLock(false, false);
}
}
/**
* Example how to remove a variable.
*
* @since 4.2.440
* @deprecated since 4.2.440 - see {@link #removeVariable_FormData(SiteStoreFolder)} instead
*/
@Deprecated
public void removeVariable(final SiteStoreFolder folder) throws LockException, ElementDeletedException {
final String variableName = "myVariable";
// 1. lock the folder
folder.setLock(true, false);
try {
// 2. retrieve Data (variables) from SiteStoreFolder
final Data data = folder.getData();
// 3. try to retrieve a DataValue (variable) with desired name
final DataValue dataValue = data.get(variableName);
// 4. check existence of the DataValue (variable)
if (dataValue == null) {
throw new IllegalArgumentException("Variable named " + variableName + " doesn't exist!");
}
// 5. remove the DataValue
data.remove(dataValue);
// 6. don't forget to set changed data back to folder
folder.setData(data);
// 7. save changes and unlock the folder
folder.save("remove variable", false);
} finally {
folder.setLock(false, false);
}
}
/**
* Example how to remove a variable.
*
* @since 4.2.34
*/
public void removeVariable_FormData(final SiteStoreFolder folder) throws LockException, ElementDeletedException {
final String variableName = "myVariable";
// 1. lock the folder
folder.setLock(true, false);
try {
// 2. retrieve FormData (variables) from SiteStoreFolder
final SiteStoreVariableFormData formData = folder.getFormData();
// 3. remove variable with desired name
formData.removeVariable(variableName);
// 4. don't forget to set changed formdata back to folder
folder.setFormData(formData);
// 5. save changes and unlock the folder
folder.save("remove variable", false);
} finally {
folder.setLock(false, false);
}
}
}