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}