Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/**
* DataCleaner (community edition)
* Copyright (C) 2014 Free Software Foundation, Inc.
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, 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 Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this distribution; if not, write to:
* Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
*/
package org.datacleaner.windows;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JToolBar;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import org.apache.metamodel.DataContext;
import org.apache.metamodel.csv.CsvConfiguration;
import org.apache.metamodel.csv.CsvDataContext;
import org.apache.metamodel.data.DataSet;
import org.apache.metamodel.data.Row;
import org.apache.metamodel.query.Query;
import org.apache.metamodel.schema.Column;
import org.apache.metamodel.schema.Table;
import org.apache.metamodel.util.FileHelper;
import org.datacleaner.Version;
import org.datacleaner.bootstrap.DCWindowContext;
import org.datacleaner.bootstrap.WindowContext;
import org.datacleaner.panels.DCPanel;
import org.datacleaner.util.IconUtils;
import org.datacleaner.util.ImageManager;
import org.datacleaner.util.ResourceManager;
import org.datacleaner.util.StringUtils;
import org.datacleaner.util.WidgetFactory;
import org.datacleaner.util.WidgetUtils;
import org.datacleaner.widgets.DCLabel;
import org.datacleaner.widgets.DCListCellRenderer;
import org.datacleaner.widgets.tabs.CloseableTabbedPane;
import org.jdesktop.swingx.HorizontalLayout;
import org.jdesktop.swingx.VerticalLayout;
import org.jdesktop.swingx.action.OpenBrowserAction;
/**
* The "About" dialog of the DataCleaner application.
*/
public class AboutDialog extends AbstractDialog {
public static class LicensedProject {
public String name;
public String websiteUrl;
public String license;
}
private static final long serialVersionUID = 1L;
private static final ResourceManager resourceManager = ResourceManager.get();
private static final ImageManager imageManager = ImageManager.get();
public AboutDialog(final WindowContext windowContext) {
super(windowContext);
}
public static List getLicensedProjects() {
final List result = new ArrayList<>();
final URL url = resourceManager.getUrl("licenses/dependency-licenses.csv");
if (url == null) {
throw new IllegalStateException("Could not find dependencies file");
}
try {
final DataContext dc = new CsvDataContext(url.openStream(), new CsvConfiguration());
final Table table = dc.getDefaultSchema().getTable(0);
final Column projectColumn = table.getColumnByName("Project");
final Column websiteColumn = table.getColumnByName("Website");
final Column licenseColumn = table.getColumnByName("License");
final Query q = dc.query().from(table).select(table.getColumns()).orderBy(projectColumn).asc().toQuery();
final DataSet ds = dc.executeQuery(q);
while (ds.next()) {
final LicensedProject licensedProject = new LicensedProject();
final Row row = ds.getRow();
final String licenseName = row.getValue(licenseColumn).toString();
licensedProject.name = row.getValue(projectColumn).toString();
licensedProject.websiteUrl = row.getValue(websiteColumn).toString();
licensedProject.license = getLicense(licenseName);
result.add(licensedProject);
}
} catch (final IOException e) {
throw new IllegalStateException("Error occurred while reading dependencies file", e);
}
return result;
}
public static String getLicense(final String licenseName) {
final URL url = resourceManager.getUrl("licenses/" + licenseName + ".txt");
if (url == null) {
throw new IllegalArgumentException("Could not find license file for license: " + licenseName);
}
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(url.openStream(), FileHelper.UTF_8_ENCODING));
final StringBuilder sb = new StringBuilder();
for (String line = reader.readLine(); line != null; line = reader.readLine()) {
if (sb.length() != 0) {
sb.append('\n');
}
sb.append(line);
}
return sb.toString();
} catch (final Exception e) {
throw new IllegalStateException("Error occurred while reading license file: " + licenseName, e);
} finally {
if (reader != null) {
try {
reader.close();
} catch (final IOException e) {
// do nothing
}
}
}
}
@Override
public void toFront() {
super.toFront();
}
@Override
protected String getBannerTitle() {
return "About DataCleaner";
}
@Override
protected int getDialogWidth() {
return 650;
}
@Override
protected boolean isWindowResizable() {
return true;
}
@Override
protected JComponent getDialogContent() {
final CloseableTabbedPane tabbedPane = new CloseableTabbedPane(true);
tabbedPane.addTab("About DataCleaner",
imageManager.getImageIcon(IconUtils.APPLICATION_ICON, IconUtils.ICON_SIZE_LARGE), getAboutPanel(),
"About DataCleaner");
tabbedPane.setUnclosableTab(0);
tabbedPane.addTab("Licensing", imageManager.getImageIcon("images/menu/license.png"), getLicensingPanel(),
"Licensing");
tabbedPane.setUnclosableTab(1);
tabbedPane.setPreferredSize(new Dimension(getDialogWidth(), 500));
return tabbedPane;
}
private JComponent getLicensingPanel() {
final String dcLicense = getLicense("lgpl");
final DCLabel licenseHeader = DCLabel.dark("");
licenseHeader.setFont(WidgetUtils.FONT_HEADER1);
final DCLabel licenseLabel = DCLabel.darkMultiLine("");
licenseLabel.setBackground(WidgetUtils.BG_COLOR_BRIGHTEST);
licenseLabel.setFont(WidgetUtils.FONT_MONOSPACE);
licenseLabel.setOpaque(true);
final JButton dcLicenseButton = WidgetFactory.createSmallButton("images/menu/license.png");
dcLicenseButton.setToolTipText("DataCleaner's license: GNU LGPL");
dcLicenseButton.addActionListener(e -> {
licenseHeader.setText("Displaying license of DataCleaner");
licenseLabel.setText(dcLicense);
});
final JComboBox