Skip to content

Instantly share code, notes, and snippets.

View pvlasov's full-sized avatar

Pavel Vlasov pvlasov

View GitHub Profile
@pvlasov
pvlasov / AesEncryptionDecryption.java
Created November 7, 2019 21:32
An example of AES encryption and decryption in Java
// --- Encryption ---
// Init cipher
String encryptionKey = ...;
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(encryptionKey.getBytes(StandardCharsets.UTF_8));
byte[] digest = md.digest();
SecretKey secretKey = new SecretKeySpec(Arrays.copyOf(digest, 16), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
String ivStr = ...; // Shared string or unencrypted part of message, or empty string.
IvParameterSpec iv = new IvParameterSpec(Arrays.copyOf(ivStr.getBytes(StandardCharsets.UTF_8), 16));
@pvlasov
pvlasov / PicoCliQuickStart.java
Created November 4, 2019 22:40
Shows basic usage of a command hierarchy in PicoCli
import java.util.concurrent.Callable;
import picocli.CommandLine;
import picocli.CommandLine.Command;
import picocli.CommandLine.IVersionProvider;
import picocli.CommandLine.Model.CommandSpec;
import picocli.CommandLine.ParameterException;
import picocli.CommandLine.Spec;
public class PicoCliTest {
@pvlasov
pvlasov / QrCodec.java
Last active November 4, 2019 22:45
Shows how to use Zxing to write/read QR codes
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Base64;
import java.util.Random;
import javax.imageio.ImageIO;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.LuminanceSource;
@pvlasov
pvlasov / ereference-item-provider.java
Created October 27, 2019 06:34
Shows how to use EReferenceItemProvider to create tree nodes (folders) for EReferences
@Override
public Collection<?> getChildren(Object object) {
List<EReferenceItemProvider> children = eReferenceItemProviders.get(object);
if (children == null) {
children = new ArrayList<>();
eReferenceItemProviders.put(object, children);
children.add(new EReferenceItemProvider(this, (EObject) object, AppPackage.Literals.CONTAINER__ELEMENTS));
children.add(new EReferenceItemProvider(this, (EObject) object, AppPackage.Literals.ABSTRACT_ACTION__ACTION_MAPPINGS));
children.add(new EReferenceItemProvider(this, (EObject) object, AppPackage.Literals.ACTION_BASE__CONTENT));
}
@pvlasov
pvlasov / Item-property-descriptor.java
Last active October 27, 2019 06:08
Shows how to use NasdanikaItemProvider.createItemPropertyDescriptor method
/**
* This adds a property descriptor for the Color feature.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated NOT
*/
protected void addColorPropertyDescriptor(Object object) {
itemPropertyDescriptors.add
(createItemPropertyDescriptor
(getResourceLocator(),
@pvlasov
pvlasov / jGit.md
Last active September 16, 2019 15:38
Working with jGit

Maven dependency

<dependency>
  <groupId>org.eclipse.jgit</groupId>
  <artifactId>org.eclipse.jgit</artifactId>
  <version>5.4.2.201908231537-r</version>
</dependency>

Resources

@pvlasov
pvlasov / editorcustomization.java
Last active July 29, 2019 14:31
Shows how to replace object selection dialog in a reference property editor
/**
* @generated NOT
*/
protected void addXXXPropertyDescriptor(Object object) {
EMFEditUIPropertyEditorFactory editorFactory = new EMFEditUIPropertyEditorFactory(null) {
@Override
public CellEditor createEditor(Object object, IItemPropertyDescriptor propertyDescriptor, Composite composite) {
ILabelProvider labelProvider = new org.eclipse.emf.edit.ui.provider.PropertyDescriptor(object, propertyDescriptor).getLabelProvider();
@pvlasov
pvlasov / generate-sirius-diagram-images-with-maps.md
Last active July 18, 2019 00:50
Headless generation of diagram images from Sirius representations (.aird) with image maps
@pvlasov
pvlasov / constraint.ecore
Created April 23, 2019 23:30
Ecore constraint annotation for generation of validation methods
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="nonNegativeBalance"/>
</eAnnotations>
@pvlasov
pvlasov / clear-targets.bat
Created January 8, 2019 15:21
Recursively remove target directories in multiple Maven projects
for /f %i in ('dir /a:d /s /b target') do rd /s /q %i