summaryrefslogtreecommitdiffstats
path: root/server/src/com/vaadin/terminal/CompositeErrorMessage.java
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/com/vaadin/terminal/CompositeErrorMessage.java')
-rw-r--r--server/src/com/vaadin/terminal/CompositeErrorMessage.java122
1 files changed, 122 insertions, 0 deletions
diff --git a/server/src/com/vaadin/terminal/CompositeErrorMessage.java b/server/src/com/vaadin/terminal/CompositeErrorMessage.java
new file mode 100644
index 0000000000..e86102ae3b
--- /dev/null
+++ b/server/src/com/vaadin/terminal/CompositeErrorMessage.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright 2011 Vaadin Ltd.
+ *
+ * Licensed 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 com.vaadin.terminal;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+/**
+ * Class for combining multiple error messages together.
+ *
+ * @author Vaadin Ltd
+ * @since 3.0
+ */
+@SuppressWarnings("serial")
+public class CompositeErrorMessage extends AbstractErrorMessage {
+
+ /**
+ * Constructor for CompositeErrorMessage.
+ *
+ * @param errorMessages
+ * the Array of error messages that are listed togeter. Nulls are
+ * ignored, but at least one message is required.
+ */
+ public CompositeErrorMessage(ErrorMessage[] errorMessages) {
+ super(null);
+ setErrorLevel(ErrorLevel.INFORMATION);
+
+ for (int i = 0; i < errorMessages.length; i++) {
+ addErrorMessage(errorMessages[i]);
+ }
+
+ if (getCauses().size() == 0) {
+ throw new IllegalArgumentException(
+ "Composite error message must have at least one error");
+ }
+
+ }
+
+ /**
+ * Constructor for CompositeErrorMessage.
+ *
+ * @param errorMessages
+ * the Collection of error messages that are listed together. At
+ * least one message is required.
+ */
+ public CompositeErrorMessage(
+ Collection<? extends ErrorMessage> errorMessages) {
+ super(null);
+ setErrorLevel(ErrorLevel.INFORMATION);
+
+ for (final Iterator<? extends ErrorMessage> i = errorMessages
+ .iterator(); i.hasNext();) {
+ addErrorMessage(i.next());
+ }
+
+ if (getCauses().size() == 0) {
+ throw new IllegalArgumentException(
+ "Composite error message must have at least one error");
+ }
+ }
+
+ /**
+ * Adds a error message into this composite message. Updates the level
+ * field.
+ *
+ * @param error
+ * the error message to be added. Duplicate errors are ignored.
+ */
+ private void addErrorMessage(ErrorMessage error) {
+ if (error != null && !getCauses().contains(error)) {
+ addCause(error);
+ if (error.getErrorLevel().intValue() > getErrorLevel().intValue()) {
+ setErrorLevel(error.getErrorLevel());
+ }
+ }
+ }
+
+ /**
+ * Gets Error Iterator.
+ *
+ * @return the error iterator.
+ */
+ public Iterator<ErrorMessage> iterator() {
+ return getCauses().iterator();
+ }
+
+ /**
+ * Returns a comma separated list of the error messages.
+ *
+ * @return String, comma separated list of error messages.
+ */
+ @Override
+ public String toString() {
+ String retval = "[";
+ int pos = 0;
+ for (final Iterator<ErrorMessage> i = getCauses().iterator(); i
+ .hasNext();) {
+ if (pos > 0) {
+ retval += ",";
+ }
+ pos++;
+ retval += i.next().toString();
+ }
+ retval += "]";
+
+ return retval;
+ }
+}