Compare commits

..

1 Commits
main ... asdzx

Author SHA1 Message Date
zx c4933274d3 src4
1 year ago

@ -0,0 +1,22 @@
package crm.utils;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.io.File;
public class ReadDataUtils {
public static File ReadFile(String dialogMEssage, JFrame parent, String fileExtensionDescription,
String... fileExtension) {
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(fileExtensionDescription, fileExtension);
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(parent);
if (returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You chose to open this file: " + chooser.getSelectedFile().getName());
return chooser.getSelectedFile();
}
return null;
}
}

@ -0,0 +1,62 @@
package crm.utils;
import com.opencsv.CSVWriter;
import com.opencsv.bean.ColumnPositionMappingStrategy;
import com.opencsv.bean.StatefulBeanToCsv;
import com.opencsv.bean.StatefulBeanToCsvBuilder;
import com.opencsv.exceptions.CsvException;
import crm.entity.Customer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.PrintWriter;
import java.util.List;
public class WriteCsvToResponse {
private static final Logger LOGGER = LoggerFactory.getLogger(WriteCsvToResponse.class);
public static void writeCustomers(PrintWriter printWriter, List<Customer> customers) {
try {
ColumnPositionMappingStrategy columnPositionMappingStrategy = new ColumnPositionMappingStrategy();
columnPositionMappingStrategy.setType(Customer.class);
columnPositionMappingStrategy.generateHeader();
String[] columns = new String[]{"id", "name", "email", "phone", "firstName", "lastName", "city", "address", "enabled"};
columnPositionMappingStrategy.setColumnMapping(columns);
StatefulBeanToCsv statefulBeanToCsv = new StatefulBeanToCsvBuilder(printWriter)
.withQuotechar(CSVWriter.NO_QUOTE_CHARACTER)
.withMappingStrategy(columnPositionMappingStrategy)
.withSeparator(',')
.build();
statefulBeanToCsv.write(customers);
} catch (CsvException ex) {
LOGGER.error("Error mapping Bean to CSV", ex);
}
}
public static void writeCustomer(PrintWriter printWriter, Customer customer) {
try {
ColumnPositionMappingStrategy columnPositionMappingStrategy = new ColumnPositionMappingStrategy();
columnPositionMappingStrategy.setType(Customer.class);
String[] columns = new String[]{"id", "name", "email", "phone", "firstName", "lastName", "city", "address", "enabled"};
columnPositionMappingStrategy.setColumnMapping(columns);
StatefulBeanToCsv statefulBeanToCsv = new StatefulBeanToCsvBuilder(printWriter)
.withQuotechar(CSVWriter.NO_QUOTE_CHARACTER)
.withMappingStrategy(columnPositionMappingStrategy)
.withSeparator(',')
.build();
statefulBeanToCsv.write(customer);
} catch (CsvException ex) {
LOGGER.error("Error mapping Bean to CSV", ex);
}
}
}

@ -0,0 +1,40 @@
package crm.view;
import org.springframework.web.servlet.view.AbstractView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
public abstract class AbstractCsvView extends AbstractView {
private static final String CONTENT_TYPE = "text/csv";
private String url;
public AbstractCsvView() {
setContentType(CONTENT_TYPE);
}
public void setUrl(String url) {
this.url = url;
}
@Override
protected boolean generatesDownloadContent() {
return true;
}
@Override
protected final void renderMergedOutputModel(
Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
response.setContentType(getContentType());
buildCsvDocument(model, request, response);
}
protected abstract void buildCsvDocument(
Map<String, Object> model, HttpServletRequest request, HttpServletResponse response)
throws Exception;
}

@ -0,0 +1,107 @@
package crm.view;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfWriter;
import org.springframework.web.servlet.view.AbstractView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.util.Map;
public abstract class AbstractPdfView extends AbstractView {
/**
* This constructor sets the appropriate content type "application/pdf".
* Note that IE won't take much notice of this, but there's not a lot we
* can do about this. Generated documents should have a ".pdf" extension.
*/
public AbstractPdfView() {
setContentType("application/pdf");
}
@Override
protected boolean generatesDownloadContent() {
return true;
}
@Override
protected final void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
// IE workaround: write into byte array first.
ByteArrayOutputStream baos = createTemporaryOutputStream();
// Apply preferences and build metadata.
Document document = new Document(PageSize.A4.rotate(), 36, 36, 54, 36);
PdfWriter writer = PdfWriter.getInstance(document, baos);
prepareWriter(model, writer, request);
buildPdfMetadata(model, document, request);
// Build PDF document.
document.open();
buildPdfDocument(model, document, writer, request, response);
document.close();
// Flush to HTTP response.
writeToResponse(response, baos);
}
/**
* Prepare the given PdfWriter. Called before building the PDF document,
* that is, before the call to {@code Document.open()}.
* <p>Useful for registering a page event listener, for example.
* The default implementation sets the viewer preferences as returned
* by this class's {@code getViewerPreferences()} method.
* @param model the model, in case meta information must be populated from it
* @param writer the PdfWriter to prepare
* @param request in case we need locale etc. Shouldn't look at attributes.
* @throws DocumentException if thrown during writer preparation
*/
protected void prepareWriter(Map<String, Object> model, PdfWriter writer, HttpServletRequest request) throws DocumentException {
writer.setViewerPreferences(getViewerPreferences());
}
/**
* Return the viewer preferences for the PDF file.
* <p>By default returns {@code AllowPrinting} and
* {@code PageLayoutSinglePage}, but can be subclassed.
* The subclass can either have fixed preferences or retrieve
* them from bean properties defined on the View.
* @return an int containing the bits information against PdfWriter definitions
*/
protected int getViewerPreferences() {
return PdfWriter.ALLOW_PRINTING | PdfWriter.PageLayoutSinglePage;
}
/**
* Populate the iText Document's meta fields (author, title, etc.).
* <br>Default is an empty implementation. Subclasses may override this method
* to add meta fields such as title, subject, author, creator, keywords, etc.
* This method is called after assigning a PdfWriter to the Document and
* before calling {@code document.open()}.
* @param model the model, in case meta information must be populated from it
* @param document the iText document being populated
* @param request in case we need locale etc. Shouldn't look at attributes.
*/
protected void buildPdfMetadata(Map<String, Object> model, Document document, HttpServletRequest request) {
}
/**
* Subclasses must implement this method to build an iText PDF document,
* given the model. Called between {@code Document.open()} and
* {@code Document.close()} calls.
* <p>Note that the passed-in HTTP response is just supposed to be used
* for setting cookies or other HTTP headers. The built PDF document itself
* will automatically get written to the response after this method returns.
* @param model the model Map
* @param document the iText Document to add elements to
* @param writer the PdfWriter to use
* @param request in case we need locale etc. Shouldn't look at attributes.
* @param response in case we need to set cookies. Shouldn't write to it.
* @throws Exception any exception that occurred during document building
*/
protected abstract void buildPdfDocument(Map<String, Object> model, Document document, PdfWriter writer,
HttpServletRequest request, HttpServletResponse response) throws Exception;
}

@ -0,0 +1,35 @@
package crm.view;
import crm.entity.User;
import org.supercsv.io.CsvBeanWriter;
import org.supercsv.io.ICsvBeanWriter;
import org.supercsv.prefs.CsvPreference;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
public class CsvView extends AbstractCsvView {
@Override
protected void buildCsvDocument(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
response.setHeader("Content-Disposition", "attachment; filename=\"my-csv-file.csv\"");
@SuppressWarnings("unchecked")
List<User> users = (List<User>) model.get("users");
String[] header = {"FirstName", "LastName", "Username", "Email", "Password", "Enabled", "Role_id", "Role_name"};
ICsvBeanWriter csvWriter = new CsvBeanWriter(response.getWriter(),
CsvPreference.STANDARD_PREFERENCE);
csvWriter.writeHeader(header);
for (User user : users) {
csvWriter.write(user, header);
}
csvWriter.close();
}
}

@ -0,0 +1,77 @@
package crm.view;
import crm.entity.User;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.*;
import org.springframework.web.servlet.view.document.AbstractXlsView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
public class ExcelView extends AbstractXlsView{
@Override
protected void buildExcelDocument(Map<String, Object> model,
Workbook workbook,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
// change the file name
response.setHeader("Content-Disposition", "attachment; filename=\"my-xls-file.xls\"");
@SuppressWarnings("unchecked")
List<User> users = (List<User>) model.get("users");
// create excel xls sheet
Sheet sheet = workbook.createSheet("User Detail");
sheet.setDefaultColumnWidth(30);
// create style for header cells
CellStyle style = workbook.createCellStyle();
Font font = workbook.createFont();
font.setFontName("Arial");
style.setFillForegroundColor(HSSFColor.BLUE.index);
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
font.setBold(true);
font.setColor(HSSFColor.WHITE.index);
style.setFont(font);
// create header row
Row header = sheet.createRow(0);
header.createCell(0).setCellValue("FirstName");
header.getCell(0).setCellStyle(style);
header.createCell(1).setCellValue("LastName");
header.getCell(1).setCellStyle(style);
header.createCell(2).setCellValue("Username");
header.getCell(2).setCellStyle(style);
header.createCell(3).setCellValue("Email");
header.getCell(3).setCellStyle(style);
header.createCell(4).setCellValue("Password");
header.getCell(4).setCellStyle(style);
header.createCell(5).setCellValue("Enabled");
header.getCell(5).setCellStyle(style);
header.createCell(6).setCellValue("Role_id");
header.getCell(6).setCellStyle(style);
header.createCell(7).setCellValue("Role_name");
header.getCell(7).setCellStyle(style);
int rowCount = 1;
for(User user : users){
Row userRow = sheet.createRow(rowCount++);
userRow.createCell(0).setCellValue(user.getFirstName());
userRow.createCell(1).setCellValue(user.getLastName());
userRow.createCell(2).setCellValue(user.getUsername());
userRow.createCell(3).setCellValue(user.getEmail());
userRow.createCell(4).setCellValue(user.getPassword());
userRow.createCell(5).setCellValue(user.getEnabled());
userRow.createCell(6).setCellValue(user.getRole().getId());
userRow.createCell(7).setCellValue(user.getRole().getName());
}
}
}

@ -0,0 +1,78 @@
package crm.view;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import crm.entity.User;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
public class PdfView extends AbstractPdfView {
@Override
protected void buildPdfDocument(Map<String, Object> model, Document document, PdfWriter writer, HttpServletRequest request, HttpServletResponse response) throws Exception {
// change the file name
response.setHeader("Content-Disposition", "attachment; filename=\"my-pdf-file.pdf\"");
@SuppressWarnings("unchecked")
List<User> users = (List<User>) model.get("users");
document.add(new Paragraph("Generated Users " + LocalDate.now()));
PdfPTable table = new PdfPTable(users.stream().findAny().get().getColumnCount());
table.setWidthPercentage(100.0f);
table.setSpacingBefore(10);
// define font for table header row
Font font = FontFactory.getFont(FontFactory.TIMES);
font.setColor(BaseColor.WHITE);
// define table header cell
PdfPCell cell = new PdfPCell();
cell.setBackgroundColor(BaseColor.DARK_GRAY);
cell.setPadding(5);
// write table header
cell.setPhrase(new Phrase("First Name", font));
table.addCell(cell);
cell.setPhrase(new Phrase("Last Name", font));
table.addCell(cell);
cell.setPhrase(new Phrase("Username", font));
table.addCell(cell);
cell.setPhrase(new Phrase("Email", font));
table.addCell(cell);
cell.setPhrase(new Phrase("Password", font));
table.addCell(cell);
cell.setPhrase(new Phrase("Enabled", font));
table.addCell(cell);
cell.setPhrase(new Phrase("Role_id", font));
table.addCell(cell);
cell.setPhrase(new Phrase("Role_name", font));
table.addCell(cell);
for(User user : users){
table.addCell(user.getFirstName());
table.addCell(user.getLastName());
table.addCell(user.getUsername());
table.addCell(user.getEmail());
table.addCell(user.getPassword());
table.addCell(String.valueOf(user.getEnabled()));
table.addCell(String.valueOf(user.getRole().getId()));
table.addCell(user.getRole().getName());
}
document.add(table);
}
}

@ -0,0 +1,16 @@
package crm.viewResolver;
import crm.view.CsvView;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;
import java.util.Locale;
public class CsvViewResolver implements ViewResolver {
@Override
public View resolveViewName(String s, Locale locale) throws Exception {
return new CsvView();
}
}

@ -0,0 +1,16 @@
package crm.viewResolver;
import crm.view.ExcelView;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;
import java.util.Locale;
public class ExcelViewResolver implements ViewResolver {
@Override
public View resolveViewName(String s, Locale locale) throws Exception {
return new ExcelView();
}
}

@ -0,0 +1,16 @@
package crm.viewResolver;
import crm.view.PdfView;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;
import java.util.Locale;
public class PdfViewResolver implements ViewResolver {
@Override
public View resolveViewName(String s, Locale locale) throws Exception {
return new PdfView();
}
}
Loading…
Cancel
Save