blob: 22c609ebb197eb447dbad5ae504ceca865f5fbbc [file] [log] [blame]
/*******************************************************************************
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*******************************************************************************/
package org.apache.ofbiz.base.util;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.TreeSet;
/**
* Contains extra information about Messages
*
*/
@SuppressWarnings("serial")
public class MessageString implements Serializable {
public static final String module = MessageString.class.getName();
protected String message;
protected String fieldName;
protected String toFieldName;
protected Throwable sourceError;
protected Locale locale;
protected String propertyResource;
protected String propertyName;
protected boolean isError = true;
public static List<Object> getMessagesForField(String fieldName, boolean convertToStrings, List<Object> messageStringList) {
if (fieldName == null) {
return Collections.emptyList();
}
Set<String> fieldSet = new TreeSet<String>();
fieldSet.add(fieldName);
return getMessagesForField(fieldSet, convertToStrings, messageStringList);
}
public static List<Object> getMessagesForField(String fieldName1, String fieldName2, String fieldName3, String fieldName4, boolean convertToStrings, List<Object> messageStringList) {
Set<String> fieldSet = new TreeSet<String>();
if (UtilValidate.isNotEmpty(fieldName1)) fieldSet.add(fieldName1);
if (UtilValidate.isNotEmpty(fieldName2)) fieldSet.add(fieldName2);
if (UtilValidate.isNotEmpty(fieldName3)) fieldSet.add(fieldName3);
if (UtilValidate.isNotEmpty(fieldName4)) fieldSet.add(fieldName4);
return getMessagesForField(fieldSet, convertToStrings, messageStringList);
}
public static List<Object> getMessagesForField(Set<String> fieldNameSet, boolean convertToStrings, List<Object> messageStringList) {
if (messageStringList == null || UtilValidate.isEmpty(fieldNameSet)) {
return Collections.emptyList();
}
List<Object> outList = new ArrayList<Object>(messageStringList.size());
for (Object messageStringCur: messageStringList) {
if (messageStringCur instanceof MessageString) {
MessageString messageString = (MessageString) messageStringCur;
if (messageString.isForField(fieldNameSet)) {
if (convertToStrings) {
outList.add(messageString.toString());
} else {
outList.add(messageString);
}
}
} else {
// not a MessageString, don't know if it is for this field so skip it
continue;
}
}
return outList;
}
/**
* @param message
* @param fieldName
* @param locale
* @param propertyResource
* @param propertyName
*/
public MessageString(String message, String fieldName, String propertyResource, String propertyName, Locale locale, boolean isError) {
this.message = message;
this.fieldName = fieldName;
this.locale = locale;
this.propertyResource = propertyResource;
this.propertyName = propertyName;
this.isError = isError;
}
/**
* @param message
* @param fieldName
*/
public MessageString(String message, String fieldName, boolean isError) {
this.message = message;
this.fieldName = fieldName;
this.isError = isError;
}
/**
* @param message
* @param fieldName
* @param toFieldName
* @param sourceError
*/
public MessageString(String message, String fieldName, String toFieldName, Throwable sourceError) {
this.message = message;
this.fieldName = fieldName;
this.toFieldName = toFieldName;
this.sourceError = sourceError;
this.isError = true;
}
/**
* @param message
* @param sourceError
*/
public MessageString(String message, Throwable sourceError) {
this.message = message;
this.sourceError = sourceError;
this.isError = true;
}
/**
* @return Returns the fieldName.
*/
public String getFieldName() {
return fieldName;
}
/**
* @param fieldName The fieldName to set.
*/
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
public boolean isForField(Set<String> fieldNameSet) {
if (fieldNameSet == null) {
return true;
}
return fieldNameSet.contains(this.fieldName);
}
public boolean isForField(String fieldName) {
if (this.fieldName == null) {
if (fieldName == null) {
return true;
} else {
return false;
}
} else {
return this.fieldName.equals(fieldName);
}
}
/**
* @return Returns the message.
*/
public String getMessage() {
return message;
}
/**
* @param message The message to set.
*/
public void setMessage(String message) {
this.message = message;
}
/**
* @return Returns the sourceError.
*/
public Throwable getSourceError() {
return sourceError;
}
/**
* @param sourceError The sourceError to set.
*/
public void setSourceError(Throwable sourceError) {
this.sourceError = sourceError;
}
/**
* @return Returns the toFieldName.
*/
public String getToFieldName() {
return toFieldName;
}
/**
* @param toFieldName The toFieldName to set.
*/
public void setToFieldName(String toFieldName) {
this.toFieldName = toFieldName;
}
/**
* @return Returns the locale.
*/
public Locale getLocale() {
return locale;
}
/**
* @param locale The locale to set.
*/
public void setLocale(Locale locale) {
this.locale = locale;
}
/**
* @return Returns the propertyName.
*/
public String getPropertyName() {
return propertyName;
}
/**
* @param propertyName The propertyName to set.
*/
public void setPropertyName(String propertyName) {
this.propertyName = propertyName;
}
/**
* @return Returns the propertyResource.
*/
public String getPropertyResource() {
return propertyResource;
}
/**
* @param propertyResource The propertyResource to set.
*/
public void setPropertyResource(String propertyResource) {
this.propertyResource = propertyResource;
}
/**
* @return Returns the isError.
*/
public boolean isError() {
return isError;
}
/**
* @param isError The isError to set.
*/
public void setError(boolean isError) {
this.isError = isError;
}
@Override
public String toString() {
return this.message;
}
}