diff --git a/Semester 3/Assignments/templatesMatricesSample/src/main/java/edu/slcc/asdv/beans/MatrixBeanA.java b/Semester 3/Assignments/templatesMatricesSample/src/main/java/edu/slcc/asdv/beans/MatrixBeanA.java index a53fcdf..cf56420 100644 --- a/Semester 3/Assignments/templatesMatricesSample/src/main/java/edu/slcc/asdv/beans/MatrixBeanA.java +++ b/Semester 3/Assignments/templatesMatricesSample/src/main/java/edu/slcc/asdv/beans/MatrixBeanA.java @@ -16,16 +16,15 @@ import java.util.ArrayList; */ @Named(value = "matrixBeanA") @ViewScoped -public class MatrixBeanA implements Serializable -{ +public class MatrixBeanA implements Serializable { + private int columns = 2; private int rows = 2; ArrayList> matrix = new ArrayList>(); - public MatrixBeanA() - { + public MatrixBeanA() { matrix = new ArrayList>(); - BigInteger counter = BigInteger.ZERO; + BigInteger counter = BigInteger.ZERO; for (int i = 0; i < columns; ++i) { ArrayList row = new ArrayList<>(); for (int j = 0; j < rows; ++j) { @@ -37,59 +36,58 @@ public class MatrixBeanA implements Serializable } } - public int getColumns() - { + public int getColumns() { return columns; } - public void setColumns(int columns) - { + public void setColumns(int columns) { this.columns = columns; } - public int getRows() - { + public int getRows() { return rows; } - public void setRows(int rows) - { + public void setRows(int rows) { this.rows = rows; } - public void listenForKeyUp(int i, int j, String input) - { + public void listenForKeyUp(int i, int j, String input) { System.out.println("i=" + i); System.out.println("j=" + j); System.out.println("input=" + input); matrix.get(i).set(j, input); - + } - public ArrayList> getMatrix() - { + public ArrayList> getMatrix() { return matrix; } - public void changeRowsColumns() { - System.out.println("Columns:" + columns); - System.out.println("Rows:" + rows); - ArrayList> resizedMatrix = new ArrayList<>(); - for (int i = 0; i < rows; ++i) { + + public void changeRowsColumns() { + System.out.println("Columns:" + columns); + System.out.println("Rows:" + rows); + ArrayList> resizedMatrix = new ArrayList<>(); + + // Create a new resized matrix with the updated number of rows and columns + for (int i = 0; i < rows; ++i) { ArrayList row = new ArrayList<>(); for (int j = 0; j < columns; ++j) { row.add("1"); } resizedMatrix.add(row); } - // add the data from the old matrix to the new one - for (int i = 0; i < columns; ++i) { - for (int j = 0; j < rows; ++j) { - if (i < matrix.size() && j < matrix.get(i).size()) { - resizedMatrix.get(i).set(j, matrix.get(i).get(j)); - } + + // Copy data from the old matrix to the new resized matrix + for (int i = 0; i < rows; ++i) { + for (int j = 0; j < columns; ++j) { + if (i < matrix.size() && j < matrix.get(i).size()) { + resizedMatrix.get(i).set(j, matrix.get(i).get(j)); } } - // overwrite the old matrix - matrix = resizedMatrix; + } + + // Overwrite the old matrix with the resized matrix + matrix = resizedMatrix; } } diff --git a/Semester 3/Assignments/templatesMatricesSample/src/main/java/edu/slcc/asdv/beans/MatrixOperations.java b/Semester 3/Assignments/templatesMatricesSample/src/main/java/edu/slcc/asdv/beans/MatrixOperations.java index 3de68b4..2ecc130 100644 --- a/Semester 3/Assignments/templatesMatricesSample/src/main/java/edu/slcc/asdv/beans/MatrixOperations.java +++ b/Semester 3/Assignments/templatesMatricesSample/src/main/java/edu/slcc/asdv/beans/MatrixOperations.java @@ -13,12 +13,11 @@ import java.util.ArrayList; /** * - * @author A. V. Markou + * @author A. V. Markou */ @Named(value = "matrixOperations") @ViewScoped -public class MatrixOperations implements Serializable -{ +public class MatrixOperations implements Serializable { @Inject MatrixBeanA matrixA; @@ -27,81 +26,91 @@ public class MatrixOperations implements Serializable @Inject MatrixBeanC matrixC; - + edu.slcc.asdv.bl.Matrices matrixManipulator = new edu.slcc.asdv.bl.Matrices(); public String add() { - - ArrayList> a = matrixA.getMatrix(); - ArrayList> b = matrixB.getMatrix(); - ArrayList> c = new ArrayList>(); - - for ( int i=0; i < a.size(); ++i) - { + + ArrayList> a = matrixA.getMatrix(); + ArrayList> b = matrixB.getMatrix(); + ArrayList> c = new ArrayList>(); + + for (int i = 0; i < a.size(); ++i) { ArrayList row = new ArrayList<>(); - for ( int j=0; j < a.size(); ++j) - { - Integer result = Integer.parseInt ( a.get(i).get(j)) - + - Integer.parseInt ( b.get(i).get(j)); - - row.add( result.toString() ); - } - c.add(row); - System.out.println(row); + for (int j = 0; j < a.size(); ++j) { + Integer result = Integer.parseInt(a.get(i).get(j)) + + Integer.parseInt(b.get(i).get(j)); + + row.add(result.toString()); + } + c.add(row); + System.out.println(row); } - matrixC.setMatrix( c ); - return ""; + matrixC.setMatrix(c); + return ""; } public String multiply() { - ArrayList> a = convertToBigInteger(matrixA.getMatrix()); - ArrayList> b = convertToBigInteger(matrixA.getMatrix()); - ArrayList> c = new ArrayList>(); - c = convertToString(matrixManipulator.multiplyParallel(a, b)); - printArray(c); - matrixC.setMatrix( c ); - return "";} - - public String subtract() { - - ArrayList> a = matrixA.getMatrix(); - ArrayList> b = matrixB.getMatrix(); - ArrayList> c = new ArrayList>(); - - for ( int i=0; i < a.size(); ++i) - { - ArrayList row = new ArrayList<>(); - for ( int j=0; j < a.size(); ++j) - { - Integer result = Integer.parseInt ( a.get(i).get(j)) - - - Integer.parseInt ( b.get(i).get(j)); - - row.add( result.toString() ); - } - c.add(row); - System.out.println(row); + ArrayList> a = convertToBigInteger(matrixA.getMatrix()); + ArrayList> b = convertToBigInteger(matrixA.getMatrix()); + ArrayList> c = new ArrayList>(); + + for (int i = 0; i < a.size(); i++) { + ArrayList rowResult = new ArrayList<>(); + for (int j = 0; j < b.get(i).size(); j++) { + BigInteger sum = BigInteger.ZERO; + for (int k = 0; k < a.get(0).size(); k++) { + sum = sum.add(a.get(i).get(k).multiply(b.get(k).get(j))); + } + rowResult.add(sum.toString()); + } + c.add(rowResult); } - matrixC.setMatrix( c ); - return ""; + + printArray(c); + matrixC.setMatrix(c); + return ""; } - - public MatrixBeanC getMatrixC(){return this.matrixC;} + public String subtract() { - public MatrixBeanA getMatrixA(){return matrixA;} + ArrayList> a = matrixA.getMatrix(); + ArrayList> b = matrixB.getMatrix(); + ArrayList> c = new ArrayList>(); + + for (int i = 0; i < a.size(); ++i) { + ArrayList row = new ArrayList<>(); + for (int j = 0; j < a.size(); ++j) { + Integer result = Integer.parseInt(a.get(i).get(j)) + - Integer.parseInt(b.get(i).get(j)); + + row.add(result.toString()); + } + c.add(row); + System.out.println(row); + } + matrixC.setMatrix(c); + return ""; + } + + public MatrixBeanC getMatrixC() { + return this.matrixC; + } + + public MatrixBeanA getMatrixA() { + return matrixA; + } + + public MatrixBeanB getMatrixB() { + return matrixB; + } - public MatrixBeanB getMatrixB(){return matrixB;} - - /* - public ArrayList> convertToBigInteger(ArrayList> matrix) { ArrayList> bigInt2DArray = new ArrayList<>(); for (int i = 0; i < matrix.size(); i++) { ArrayList columnArray = new ArrayList(); - for (int j = 0; j < matrix.get(i).size(); j++) { + for (int j = 0; j < matrix.get(i).size(); j++) { String cellValue = matrix.get(i).get(j); columnArray.add(new BigInteger(cellValue)); } @@ -110,7 +119,7 @@ public class MatrixOperations implements Serializable return bigInt2DArray; } - + public ArrayList> convertToString(ArrayList> matrix) { int numRows = matrix.size(); int numCols = matrix.get(0).size(); @@ -125,7 +134,7 @@ public class MatrixOperations implements Serializable } return string2DArray; } -*/ + /** * * @param matrix @@ -143,7 +152,7 @@ public class MatrixOperations implements Serializable System.out.println(output); return output; } - + public String printSingleArray(ArrayList matrix) { String output = "\t{"; for (int i = 0; i < matrix.size(); ++i) { @@ -155,6 +164,5 @@ public class MatrixOperations implements Serializable output += "}"; return output; } - - + } diff --git a/Semester 3/Assignments/templatesMatricesSample/src/main/java/edu/slcc/asdv/beans/MenuBar.java b/Semester 3/Assignments/templatesMatricesSample/src/main/java/edu/slcc/asdv/beans/MenuBar.java index 8d98aee..0cb8fcb 100644 --- a/Semester 3/Assignments/templatesMatricesSample/src/main/java/edu/slcc/asdv/beans/MenuBar.java +++ b/Semester 3/Assignments/templatesMatricesSample/src/main/java/edu/slcc/asdv/beans/MenuBar.java @@ -75,7 +75,24 @@ public class MenuBar implements Serializable PrimeFaces.current().ajax().update(idsC); } - + public boolean areMatricesTheSameSize() { + int matrixAColumns = matrixOperations.getMatrixA().getColumns(); + int matrixBColumns = matrixOperations.getMatrixB().getColumns(); + int matrixCColumns = matrixOperations.getMatrixC().getColumns(); + + int matrixARows = matrixOperations.getMatrixA().getRows(); + int matrixBRows = matrixOperations.getMatrixB().getRows(); + int matrixCRows = matrixOperations.getMatrixC().getRows(); + + boolean matrixAEqual = (matrixAColumns == matrixARows); + boolean matrixBEqual = (matrixBColumns == matrixBRows); + boolean matrixCEqual = (matrixCColumns == matrixCRows); + + if (matrixAEqual && matrixBEqual && matrixCEqual) { + return true; + } + return false; + } diff --git a/Semester 3/Assignments/templatesMatricesSample/src/main/webapp/matrices/menuMatrices.xhtml b/Semester 3/Assignments/templatesMatricesSample/src/main/webapp/matrices/menuMatrices.xhtml index b5229db..3731177 100644 --- a/Semester 3/Assignments/templatesMatricesSample/src/main/webapp/matrices/menuMatrices.xhtml +++ b/Semester 3/Assignments/templatesMatricesSample/src/main/webapp/matrices/menuMatrices.xhtml @@ -17,7 +17,7 @@ @@ -28,7 +28,7 @@ update="id_message"/>