Skip to content

Instantly share code, notes, and snippets.

View Ikhiloya's full-sized avatar

Ikhiloya Ikhiloya

View GitHub Profile
mvn spring-boot:run -Dspring-boot.run.profiles=<active-profile>
@Service
public class StorageService {
private final Logger log = LoggerFactory.getLogger(StorageService.class);
private final StorageStrategy storageStrategy;
public StorageService(StorageFactory storageFactory) {
this.storageStrategy = storageFactory.createStrategy();
}
public FileDTO uploadFile(MultipartFile file) throws Exception {
@Ikhiloya
Ikhiloya / AwsStorageStrategy.java
Created May 13, 2020 18:43
This shopws how to upload a file to Amazon Webservice storage
@Service
public class AwsStorageStrategy implements StorageStrategy {
private final Logger log = LoggerFactory.getLogger(AwsStorageStrategy.class);
private final Environment environment;
private AmazonS3 s3client;
@Value("${cloud.aws.endpointurl}")
private String endpointUrl;
@Value("${cloud.aws.region.static}")
@Ikhiloya
Ikhiloya / FileStorageStrategy.java
Created May 13, 2020 18:41
This shows how to upload file using a local file storage
@Service
public class FileStorageStrategy implements StorageStrategy {
private final Logger log = LoggerFactory.getLogger(FileStorageStrategy.class);
private final Path fileStorageLocation;
@Autowired
public FileStorageStrategy(FileStorageProperties fileStorageProperties) throws IOException {
this.fileStorageLocation = Paths.get(fileStorageProperties.getUploadDir())
.toAbsolutePath().normalize();
Files.createDirectories(fileStorageLocation);
public interface StorageStrategy {
String[] uploadFile(MultipartFile multipartFile) throws Exception;
}
@Ikhiloya
Ikhiloya / StorageFactory.java
Created May 13, 2020 18:38
Factory that creates the various strategy
@Service
public class StorageFactory {
private final Logger log = LoggerFactory.getLogger(StorageFactory.class);
private final Environment environment;
private final AwsStorageStrategy awsStorageStrategy;
private final FileStorageStrategy fileStorageStrategy;
public StorageFactory(Environment environment, AwsStorageStrategy awsStorageStrategy, FileStorageStrategy fileStorageStrategy) {
this.environment = environment;
@Ikhiloya
Ikhiloya / GmailStrategy.java
Last active May 13, 2020 12:03
Gmail email implementation for sending emails
@Service
public class GmailStrategy implements MailStrategy {
private final Logger log = LoggerFactory.getLogger(GmailStrategy.class);
private static final String USER = "user";
private static final String BASE_URL = "baseUrl";
private final JavaMailSender javaMailSender;
private final MessageSource messageSource;
private final SpringTemplateEngine templateEngine;
private final Environment environment;
@Ikhiloya
Ikhiloya / SendGridMailStrategy.java
Last active May 13, 2020 12:05
SendGrid email implementation for sending emails
@Service
public class SendGridMailStrategy implements MailStrategy {
private final Logger log = LoggerFactory.getLogger(SendGridMailStrategy.class);
private final SpringTemplateEngine templateEngine;
private final Environment environment;
private static final String USER = "user";
private static final String BASE_URL = "baseUrl";
public SendGridMailStrategy(SpringTemplateEngine templateEngine, Environment environment) {
this.templateEngine = templateEngine;
@Ikhiloya
Ikhiloya / MailStrategy.java
Last active May 13, 2020 11:59
An interface that hols the different methods for sending emails
public interface MailStrategy {
@Async
void sendActivationEmail(User user);
}
@Ikhiloya
Ikhiloya / MailFactory.java
Last active May 13, 2020 08:08
Factory that returns the specified email strategy based on the profile
@Service
public class MailFactory {
private final Logger log = LoggerFactory.getLogger(MailFactory.class);
private final Environment environment;
private final GmailStrategy gmailStrategy;
private final SendGridMailStrategy sendGridMailStrategy;
public MailFactory(Environment environment, GmailStrategy gmailStrategy, SendGridMailStrategy sendGridMailStrategy) {
this.environment = environment;
this.gmailStrategy = gmailStrategy;