org.sejda.model.parameter.SetHeaderFooterParameters Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sejda-model Show documentation
Show all versions of sejda-model Show documentation
Package containing reusable model for Sejda.
/*
* Copyright 2012 by Eduard Weissmann ([email protected]).
*
* This file is part of the Sejda source code
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
package org.sejda.model.parameter;
import java.awt.Color;
import java.util.*;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.sejda.model.HorizontalAlign;
import org.sejda.model.VerticalAlign;
import org.sejda.model.parameter.base.MultiplePdfSourceMultipleOutputParameters;
import org.sejda.model.pdf.StandardType1Font;
import org.sejda.model.pdf.numbering.BatesSequence;
import org.sejda.model.pdf.page.PageRange;
import org.sejda.model.pdf.page.PageRangeSelection;
import org.sejda.model.pdf.page.PagesSelection;
import org.sejda.model.pdf.page.PredefinedSetOfPages;
import org.sejda.model.validation.constraint.Positive;
/**
* Parameters configuring how to label the header/footer of a set of pages in a given pdf document.
*
* @author Eduard Weissmann
*
*/
public class SetHeaderFooterParameters extends MultiplePdfSourceMultipleOutputParameters implements PageRangeSelection,
PagesSelection {
@NotNull
@Valid
private Set pageRanges = new HashSet<>();
@NotNull
private PredefinedSetOfPages predefinedSetOfPages = PredefinedSetOfPages.NONE;
private StandardType1Font font = StandardType1Font.HELVETICA;
private HorizontalAlign horizontalAlign = HorizontalAlign.CENTER;
private VerticalAlign verticalAlign = VerticalAlign.BOTTOM;
@Positive
private double fontSize = 10d;
@NotNull
private String pattern;
private Integer pageCountStartFrom;
private BatesSequence batesSequence;
@NotNull
private Color color = Color.black;
private int fileCountStartFrom = 1;
private boolean addMargins = false;
public StandardType1Font getFont() {
return font;
}
public void setFont(StandardType1Font font) {
this.font = font;
}
public HorizontalAlign getHorizontalAlign() {
return horizontalAlign;
}
public void setHorizontalAlign(HorizontalAlign align) {
this.horizontalAlign = align;
}
public VerticalAlign getVerticalAlign() {
return verticalAlign;
}
public void setVerticalAlign(VerticalAlign verticalAlign) {
this.verticalAlign = verticalAlign;
}
public double getFontSize() {
return fontSize;
}
public String getPattern() {
return pattern;
}
public void setPattern(String pattern) {
this.pattern = pattern;
}
public Integer getPageCountStartFrom() {
return pageCountStartFrom;
}
public void setPageCountStartFrom(int pageCountStartFrom) {
this.pageCountStartFrom = pageCountStartFrom;
}
public BatesSequence getBatesSequence() {
return batesSequence;
}
public void setBatesSequence(BatesSequence batesSequence) {
this.batesSequence = batesSequence;
}
/**
* Set the font size in pts
*
* @param fontSize
*/
public void setFontSize(double fontSize) {
this.fontSize = fontSize;
}
public Color getColor() {
return color;
}
public void setColor(Color color) {
this.color = color;
}
public Integer getFileCountStartFrom() {
return fileCountStartFrom;
}
public void setFileCountStartFrom(Integer fileCountStartFrom) {
this.fileCountStartFrom = fileCountStartFrom;
}
public boolean isAddMargins() {
return addMargins;
}
public void setAddMargins(boolean addMargins) {
this.addMargins = addMargins;
}
public PredefinedSetOfPages getPredefinedSetOfPages() {
return predefinedSetOfPages;
}
public void setPredefinedSetOfPages(PredefinedSetOfPages predefinedSetOfPages) {
this.predefinedSetOfPages = predefinedSetOfPages;
}
public void addPageRange(PageRange range) {
pageRanges.add(range);
}
public void addAllPageRanges(Collection ranges) {
ranges.forEach(this::addPageRange);
}
/**
* @return an unmodifiable view of the pageSelection
*/
@Override
public Set getPageSelection() {
return Collections.unmodifiableSet(pageRanges);
}
public Set getPageRanges() {
return pageRanges;
}
/**
* @param upperLimit
* the number of pages of the document (upper limit).
* @return the selected set of pages. Iteration ordering is predictable, it is the order in which elements were inserted into the {@link PageRange} set or the natural order in
* case of {@link PredefinedSetOfPages}.
* @see PagesSelection#getPages(int)
*/
@Override
public SortedSet getPages(int upperLimit) {
if (predefinedSetOfPages != PredefinedSetOfPages.NONE) {
return predefinedSetOfPages.getPages(upperLimit);
}
SortedSet retSet = new TreeSet<>();
for (PageRange range : getPageSelection()) {
retSet.addAll(range.getPages(upperLimit));
}
return retSet;
}
@Override
public int hashCode() {
return new HashCodeBuilder().appendSuper(super.hashCode()).append(font).append(horizontalAlign)
.append(verticalAlign).append(fontSize).append(pageRanges).append(pattern).append(batesSequence)
.append(pageCountStartFrom).append(color).append(fileCountStartFrom).append(addMargins).append(predefinedSetOfPages)
.toHashCode();
}
@Override
public boolean equals(Object other) {
if (this == other) {
return true;
}
if (!(other instanceof SetHeaderFooterParameters)) {
return false;
}
SetHeaderFooterParameters parameter = (SetHeaderFooterParameters) other;
return new EqualsBuilder().appendSuper(super.equals(other)).append(getFont(), parameter.getFont())
.append(getHorizontalAlign(), parameter.getHorizontalAlign())
.append(getVerticalAlign(), parameter.getVerticalAlign())
.append(getBatesSequence(), parameter.getBatesSequence())
.append(getPageCountStartFrom(), parameter.getPageCountStartFrom())
.append(getFontSize(), parameter.getFontSize()).append(getPageRanges(), parameter.getPageRanges())
.append(getPattern(), parameter.getPattern())
.append(getColor(), parameter.getColor())
.append(getFileCountStartFrom(), parameter.getFileCountStartFrom())
.append(isAddMargins(), parameter.isAddMargins())
.append(getPredefinedSetOfPages(), parameter.getPredefinedSetOfPages())
.isEquals();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy