/* -*- tab-width: 4 -*-
*
* Electric(tm) VLSI Design System
*
* File: PlacementDTO.java
* Written by Team 7: Felix Schmidt
*
* This code has been developed at the Karlsruhe Institute of Technology (KIT), Germany,
* as part of the course "Multicore Programming in Practice: Tools, Models, and Languages".
* Contact instructor: Dr. Victor Pankratius (pankratius@ipd.uka.de)
*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
*
* Electric(tm) is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* Electric(tm) is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Electric(tm); see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, Mass 02111-1307, USA.
*/
package com.sun.electric.tool.placement.forceDirected2.forceDirected.staged;
import com.sun.electric.tool.placement.PlacementFrame.PlacementNode;
import com.sun.electric.tool.placement.forceDirected2.forceDirected.util.CheckboardingField;
import com.sun.electric.tool.placement.forceDirected2.forceDirected.util.Force2D;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PlacementDTO implements Cloneable {
private CheckboardingField[][] fieldPart;
private int counter = 0;
private double velocityFactor = 0;
private long timestamp = 0;
private Map<PlacementNode, Force2D> forces;
private int index = 0;
public PlacementDTO(CheckboardingField[][] fields, int index) {
this.fieldPart = fields;
this.index = index;
this.timestamp = System.currentTimeMillis();
this.setForces(new HashMap<PlacementNode, Force2D>());
}
@Override
protected Object clone() throws CloneNotSupportedException {
PlacementDTO result = new PlacementDTO(this.fieldPart, this.index);
return result;
}
public int getCounter() {
return this.counter;
}
public CheckboardingField[][] getFieldPart() {
return this.fieldPart;
}
public List<CheckboardingField> getFieldsList() {
if (this.fieldPart == null) {
return null;
}
List<CheckboardingField> fields = new ArrayList<CheckboardingField>();
for (int i = 0; i < this.fieldPart.length; i++) {
for (int j = 0; j < this.fieldPart[i].length; j++) {
fields.add(this.fieldPart[i][j]);
}
}
return fields;
}
public Map<PlacementNode, Force2D> getForces() {
return this.forces;
}
public int getIndex() {
return this.index;
}
public long getTimestamp() {
return this.timestamp;
}
public double getVelocityFactor() {
return this.velocityFactor;
}
public void incCounter() {
this.counter++;
}
public void setCounter(int counter) {
this.counter = counter;
}
public void setFieldPart(CheckboardingField[][] fieldPart) {
this.fieldPart = fieldPart;
}
public void setForces(Map<PlacementNode, Force2D> forces) {
this.forces = forces;
}
public void setTimestamp(long timestamp) {
this.timestamp = timestamp;
}
public void setVelocityFactor(double velocityFactor) {
this.velocityFactor = velocityFactor;
}
}