001/*-------------------------------------------------------------------------+
002|                                                                          |
003| Copyright (c) 2009-2018 CQSE GmbH                                        |
004|                                                                          |
005+-------------------------------------------------------------------------*/
006package eu.cqse.check.framework.util.clike;
007
008import java.util.ArrayList;
009import java.util.List;
010
011/**
012 * A group of blocks representing an if/else/else if or a switch/case statement.
013 */
014public abstract class ConditionalBlockGroupBase {
015
016        /** The list of corresponding blocks. (If/else/else if or switch/case) */
017        protected List<ConditionalBlock> correspondingBlocks;
018
019        /** Constructor. */
020        public ConditionalBlockGroupBase(List<ConditionalBlock> correspondingBlocks) {
021                setCorrespondingBlocks(correspondingBlocks);
022        }
023
024        /** Constructor. */
025        public ConditionalBlockGroupBase() {
026                this.setCorrespondingBlocks(new ArrayList<>());
027        }
028
029        /** @see #correspondingBlocks */
030        public List<ConditionalBlock> getCorrespondingBlocks() {
031                return correspondingBlocks;
032        }
033
034        /** @see #correspondingBlocks */
035        public void setCorrespondingBlocks(List<ConditionalBlock> correspondingBlocks) {
036                this.correspondingBlocks = correspondingBlocks;
037        }
038
039        /** {@inheritDoc} */
040        @Override
041        public String toString() {
042                return correspondingBlocks.toString();
043        }
044
045        /** {@inheritDoc} */
046        @Override
047        public boolean equals(Object obj) {
048                if (!(obj instanceof ConditionalBlockGroupBase)) {
049                        return false;
050                }
051
052                return ((ConditionalBlockGroupBase) obj).getCorrespondingBlocks().equals(this.getCorrespondingBlocks());
053        }
054
055        /** {@inheritDoc} */
056        @Override
057        public int hashCode() {
058                return correspondingBlocks.hashCode();
059        }
060}