Rev 549 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
/*
* Copyright (C) 2007 Steve Ratcliffe
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program 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.
*
*
* Author: Steve Ratcliffe
* Create date: 23-Sep-2007
*/
package uk.me.parabola.tdbfmt;
import uk.me.parabola.io.FileBlock;
import uk.me.parabola.io.StructuredOutputStream;
import uk.me.parabola.log.Logger;
import uk.me.parabola.io.StructuredInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.HashSet;
/**
* A copyright block consists of a number of copyright segments.
*
* @author Steve Ratcliffe
*/
class CopyrightBlock
extends FileBlock
{
public static final int BLOCK_ID = 0x44
;
private static final Logger log =
Logger.
getLogger(CopyrightBlock.
class);
private final List<CopyrightSegment
> segments =
new ArrayList<>();
private final Set<CopyrightSegment
> copySet =
new HashSet<>();
CopyrightBlock
() {
super(BLOCK_ID
);
}
CopyrightBlock
(StructuredInputStream ds
) throws IOException {
super(BLOCK_ID
);
while (!ds.
testEof()) {
CopyrightSegment segment =
new CopyrightSegment
(ds
);
log.
info("segment: " + segment
);
segments.
add(segment
);
}
}
/**
* This is to overridden in a subclass.
*/
protected void writeBody
(StructuredOutputStream ds
) throws IOException {
for (CopyrightSegment seg : segments
) {
seg.
write(ds
);
}
}
/**
* Add a copyright segment. We only add unique ones.
* @param seg The copyright segment to add.
*/
public void addSegment
(CopyrightSegment seg
) {
if (copySet.
add(seg
))
segments.
add(seg
);
}
}