/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.integration.copier.portfolio.writer;
import java.util.ArrayList;
import java.util.List;
import org.springframework.util.StringUtils;
import com.opengamma.master.position.ManageablePosition;
import com.opengamma.master.security.ManageableSecurity;
import com.opengamma.util.ArgumentChecker;
import com.opengamma.util.tuple.ObjectsPair;
/**
* A dummy portfolio writer, which pretty-prints information instead of persisting
*/
public class PrettyPrintingPositionWriter implements PositionWriter {
private String[] _currentPath = new String[] {};
private boolean _prettyPrint;
public PrettyPrintingPositionWriter(boolean prettyPrint) {
_prettyPrint = prettyPrint;
}
private ManageableSecurity writeSecurity(ManageableSecurity security) {
if (_prettyPrint && security != null) {
System.out.println("Security: " + security.toString());
}
return security;
}
@Override
public void addAttribute(String key, String value) {
// Not supported
}
@Override
public ObjectsPair<ManageablePosition, ManageableSecurity[]> writePosition(ManageablePosition position, ManageableSecurity[] securities) {
ArgumentChecker.notNull(position, "position");
ArgumentChecker.notNull(securities, "securities");
List<ManageableSecurity> writtenSecurities = new ArrayList<ManageableSecurity>();
// Write securities
for (ManageableSecurity security : securities) {
ManageableSecurity writtenSecurity = writeSecurity(security);
if (writtenSecurity != null) {
writtenSecurities.add(writtenSecurity);
}
}
if (_prettyPrint) {
System.out.println("Position: " + position.toString());
}
return ObjectsPair.of(position,
writtenSecurities.toArray(new ManageableSecurity[writtenSecurities.size()]));
}
@Override
public void flush() {
if (_prettyPrint) {
System.out.println("Flushed writer");
}
}
@Override
public void close() {
if (_prettyPrint) {
System.out.println("Closed writer");
}
}
@Override
public void setPath(String[] newPath) {
ArgumentChecker.notNull(newPath, "newPath");
_currentPath = newPath;
if (_prettyPrint) {
System.out.println("Set path to: " + StringUtils.arrayToDelimitedString(newPath, "/"));
}
}
@Override
public String[] getCurrentPath() {
return _currentPath;
}
}