All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.st.maven.apt.Release Maven / Gradle / Ivy

Go to download

Deploy .deb artifacts into apt-repository. apt-repository is configured by "distribution" section in pom.xml. If there is no apt-repository, it will be created.

There is a newer version: 1.23
Show newest version
package com.st.maven.apt;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;

class Release {

	private final static Pattern SPACE = Pattern.compile(" ");

	private String origin;
	private String label;
	private String codename;
	private String date;
	private String architectures;
	private String components;
	private Set files = new HashSet();
	private List unknown = new ArrayList();

	public String getOrigin() {
		return origin;
	}

	public void setOrigin(String origin) {
		this.origin = origin;
	}

	public String getLabel() {
		return label;
	}

	public void setLabel(String label) {
		this.label = label;
	}

	public String getCodename() {
		return codename;
	}

	public void setCodename(String codename) {
		this.codename = codename;
	}

	public String getDate() {
		return date;
	}

	public void setDate(String date) {
		this.date = date;
	}

	public String getArchitectures() {
		return architectures;
	}

	public void setArchitectures(String architectures) {
		this.architectures = architectures;
	}

	public String getComponents() {
		return components;
	}

	public void setComponents(String components) {
		this.components = components;
	}

	public Set getFiles() {
		return files;
	}

	public void setFiles(Set files) {
		this.files = files;
	}

	void load(InputStream is) throws IOException {
		BufferedReader r = new BufferedReader(new InputStreamReader(is, "UTF-8"));
		String curLine = null;
		String curGroup = null;
		Map fileInfoByFilename = new HashMap();
		while ((curLine = r.readLine()) != null) {
			String line = curLine.trim();
			if (line.length() == 0) {
				continue;
			}
			if (line.charAt(0) == ' ') {
				if (curGroup != null) {
					String[] parts = SPACE.split(line.substring(1));
					if (parts.length != 3) {
						throw new IOException("unsupported format: " + line + " expected:   ");
					}
					FileInfo info = fileInfoByFilename.get(parts[2]);
					if (info == null) {
						info = new FileInfo();
						info.setFilename(parts[2]);
						info.setSize(parts[1]);
						fileInfoByFilename.put(info.getFilename(), info);
					}
					if (curGroup.equals("MD5Sum")) {
						info.setMd5(parts[0]);
					} else if (curGroup.equals("SHA1")) {
						info.setSha1(parts[0]);
					} else if (curGroup.equals("SHA256")) {
						info.setSha256(parts[0]);
					} else {
						throw new IOException("unsupported checksum: " + curGroup);
					}
				} else {
					unknown.add(line);
				}
				continue;
			}
			String[] parts = splitByColon(line);
			if (parts[0].equals("Origin")) {
				origin = parts[1];
			} else if (parts[0].equals("Label")) {
				label = parts[1];
			} else if (parts[0].equals("Codename")) {
				codename = parts[1];
			} else if (parts[0].equals("Date")) {
				date = parts[1];
			} else if (parts[0].equals("Architectures")) {
				architectures = parts[1];
			} else if (parts[0].equals("Components")) {
				components = parts[1];
			} else if (parts[0].equals("MD5Sum") || parts[0].equals("SHA1") || parts[0].equals("SHA256")) {
				curGroup = parts[0];
			} else {
				unknown.add(line);
			}
		}
		files = new HashSet(fileInfoByFilename.size());
		files.addAll(fileInfoByFilename.values());
	}

	private static String[] splitByColon(String line) {
		int index = line.indexOf(':');
		if (index == -1) {
			return new String[] { line };
		}
		String[] result = new String[2];
		result[0] = line.substring(0, index);
		result[1] = line.substring(index + 1);
		return result;
	}

	void save(OutputStream os) throws IOException {
		BufferedWriter w = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
		w.append("Origin: ").append(origin).append("\n");
		w.append("Label: ").append(label).append("\n");
		w.append("Codename: ").append(codename).append("\n");
		w.append("Date: ").append(date).append("\n");
		w.append("Architectures: ").append(architectures).append("\n");
		w.append("Components: ").append(components).append("\n");
		if (!files.isEmpty()) {
			w.append("MD5Sum:\n");
			for (FileInfo cur : files) {
				w.append(" ").append(cur.getMd5()).append(" ").append(cur.getSize()).append(" ").append(cur.getFilename()).append("\n");
			}
			w.append("SHA1:\n");
			for (FileInfo cur : files) {
				w.append(" ").append(cur.getSha1()).append(" ").append(cur.getSize()).append(" ").append(cur.getFilename()).append("\n");
			}
			w.append("SHA256:\n");
			for (FileInfo cur : files) {
				w.append(" ").append(cur.getSha256()).append(" ").append(cur.getSize()).append(" ").append(cur.getFilename()).append("\n");
			}
		}
		w.flush();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy