Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
937ad7e
Add files via upload
nestyme Oct 17, 2016
1538f28
c
nestyme Oct 23, 2016
4ac1162
new commit
nestyme Oct 24, 2016
0c0b58e
Add files via upload
nestyme Oct 17, 2016
777745d
c
nestyme Oct 23, 2016
846d52b
new commit
nestyme Oct 24, 2016
c5e4da6
Add solved task 2
nestyme Oct 31, 2016
366463e
Add solved task 2
nestyme Oct 31, 2016
86e5225
solved task2 added
nestyme Oct 31, 2016
b7b08a5
fix global pom file
nestyme Oct 31, 2016
f647630
Update My_KV_Storage.java
nestyme Oct 31, 2016
59eea60
Update Serializer1.java
nestyme Oct 31, 2016
d08e1c0
Update Specified_serializers.java
nestyme Oct 31, 2016
95f93f0
Update My_KV_StorageTest.java
nestyme Oct 31, 2016
a1f5317
Update My_KV_StorageTest.java
nestyme Oct 31, 2016
7a8fc8d
Update My_KV_Storage.java
nestyme Oct 31, 2016
d8e41b1
Update Serializer1.java
nestyme Oct 31, 2016
b813a04
Update Specified_serializers.java
nestyme Oct 31, 2016
c9e5a7b
add my solution again
nestyme Nov 8, 2016
935a957
Fixed pom.xml
nestyme Nov 8, 2016
80863bf
add my solution again
nestyme Nov 8, 2016
2705165
Latest version of task 2
nestyme Nov 8, 2016
5021127
Latest version of task 2
nestyme Nov 8, 2016
9191e68
Latest version of task 2
nestyme Nov 19, 2016
bdd476e
Latest version of task 2
nestyme Nov 19, 2016
9eba0ec
Latest version of task 2
nestyme Nov 19, 2016
ee2bc89
Latest version of task 2
nestyme Nov 19, 2016
bd3d05c
Latest version of task 2
nestyme Nov 19, 2016
bb7af1c
Update Calculator.java
nestyme Nov 19, 2016
c62dfd5
Latest version of task 2
nestyme Nov 19, 2016
1f09813
Merge remote-tracking branch 'origin/master'
nestyme Nov 19, 2016
5ffacb5
Latest version of task 2
nestyme Nov 19, 2016
2c69f9a
Latest version of task 2
nestyme Nov 26, 2016
daf18a5
Latest version of task 2
nestyme Nov 26, 2016
a312bcf
Latest version of task 2
nestyme Nov 26, 2016
4f82b2a
my commit
nestyme Dec 17, 2016
56f8a66
Merge pull request #1 from nadezhdazueva/master
nestyme Dec 17, 2016
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
* @since 04.10.16
*/
public interface KeyValueStorage<K, V> extends Closeable {

/**
* Возвращает значение для данного ключа, если оно есть в хранилище.
* Иначе возвращает null.
Expand Down
29 changes: 29 additions & 0 deletions homework-g595-zueva/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>mipt-java-2016</artifactId>
<groupId>ru.mipt.java2016</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>homework-g595-zueva</artifactId>

<dependencies>
<dependency>
<groupId>ru.mipt.java2016</groupId>
<artifactId>homework-base</artifactId>
<version>1.0.0</version>
</dependency>

<dependency>
<groupId>ru.mipt.java2016</groupId>
<artifactId>homework-tests</artifactId>
<version>1.0.0</version>
<scope>test</scope>
</dependency>
</dependencies>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package ru.mipt.java2016.homework.g595.zueva.task2.task2;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;

/**
* Created by nestyme on 31.10.2016.
*/
interface SerializerStorage<T> {
void writeToStream(DataOutputStream out, T value)throws IOException;

T readFromStream(DataInputStream in) throws IOException;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package ru.mipt.java2016.homework.g595.zueva.task2.task2;

/**
* Created by nestyme on 30.10.2016.
*/

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;


public class Serializers {

public static class SerialiserInt implements SerializerStorage<Integer> {


public void writeToStream(DataOutputStream out, Integer value) throws IOException {

out.writeInt(value);

}

public Integer readFromStream(DataInputStream in) throws IOException {

return in.readInt();
}
}


public static class SerializerStorageString implements SerializerStorage<String> {

public void writeToStream(DataOutputStream out, String value) throws IOException {
out.writeUTF(value);
}

public String readFromStream(DataInputStream in) throws IOException {
return in.readUTF();
}
}

public static class SerializerStorageDouble implements SerializerStorage<Double> {

public void writeToStream(DataOutputStream out, Double value) throws IOException {
out.writeDouble(value);
}

@Override
public Double readFromStream(DataInputStream in) throws IOException {
return in.readDouble();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package ru.mipt.java2016.homework.g595.zueva.task2.task3;
import java.io.*;
import java.nio.*;
/**
* Created by someb on 17.12.2016.
*/
public class FRFile {
private ByteBuffer mybuffer = ByteBuffer.allocate(Long.SIZE / 8);
private File myfile;
private BufferedInputStream in;
private BufferedOutputStream out;

private boolean ifEmpty = false;

public FRFile(String fileDirectory, String fileName) throws IOException {
File directory = new File(fileDirectory);
if (directory.exists()) {
myfile = new File(fileDirectory, fileName);
myfile.createNewFile();
in = new BufferedInputStream(new FileInputStream(myfile));
} else {
throw new IOException("Cannot found directory");
}
}

public long ReadFileOffst() throws IOException {
if (in.read(mybuffer.array(), 0, Long.SIZE / 8) != Long.SIZE / 8) {
throw new IOException("Can`t continue reading");
}
return mybuffer.getLong(0);
}
public int readKey() throws IOException {
if (in.read(mybuffer.array(), 0, Integer.SIZE / 8) != Integer.SIZE / 8) {
throw new IOException("Can`t continue reading");
}
return mybuffer.getInt(0);
}

public void writeBytes(ByteBuffer bytesToWrite) throws IOException {
out.write(bytesToWrite.array());
}

public void writeFileOffst(long value) throws IOException {
mybuffer.putLong(0, value);
out.write(mybuffer.array());
}

public ByteBuffer byteReading(int size) throws IOException {
ByteBuffer bytesRead = ByteBuffer.allocate(size);
in.read(bytesRead.array(), 0, size);
return bytesRead;
}


public void SizeWr(int size) throws IOException {
mybuffer.putInt(0, size);
out.write(mybuffer.array(), 0, Integer.SIZE / 8);
}

public void Clean() throws IOException {
ifEmpty = true;
in.close();
myfile.delete();
myfile.createNewFile();
out = new BufferedOutputStream(new FileOutputStream(myfile));
}

public void close() throws IOException {
if (ifEmpty) {
mybuffer.putInt(0, Integer.MIN_VALUE);
out.write(mybuffer.array(), 0, Integer.SIZE / 8);
out.close();
} else {
in.close();
}
}

public boolean checkIsEmpty() throws IOException {
return in.available() == 0;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
package ru.mipt.java2016.homework.g595.zueva.task2.task3;

/**
* Created by someb on 17.12.2016.
*/
import java.io.*;
import java.nio.ByteBuffer;

public class MyOptKVStorage {
private BufferedInputStream input;
private BufferedOutputStream output;
private File storageInstance;
private File bufferStorageInstance;
private RandomAccessFile randomAccessFile;
private ByteBuffer byteBuffer = ByteBuffer.allocate(Integer.SIZE / 8);

public MyOptKVStorage(String fileDirectory, String fileName) throws IOException {
File directory = new File(fileDirectory);
if (directory.exists()) {
storageInstance = new File(fileDirectory, fileName);
bufferStorageInstance = new File(fileDirectory, "buffer.db");
storageInstance.createNewFile();
randomAccessFile = new RandomAccessFile(storageInstance, "rw");
/* ! 'true' because we rather write to the end of the file */
output = new BufferedOutputStream(new FileOutputStream(storageInstance, true));
} else {
throw new IllegalStateException("There is no such directory");
}
}

public void writeSizeToStream(int size) throws IOException {
byteBuffer.putInt(0, size);
output.write(byteBuffer.array());
}

public void writeBytesToStream(ByteBuffer bytesToWrite) throws IOException {
output.write(bytesToWrite.array());
}

public void flushStream() throws IOException {
output.flush();
}

public int readKey(long offset) throws IOException {
randomAccessFile.seek(offset);
return randomAccessFile.readInt();
}

public ByteBuffer readBytes(int size) throws IOException {
ByteBuffer value = ByteBuffer.allocate(size);
randomAccessFile.readFully(value.array());
return value;
}

public int readKeyFromStream() throws IOException {
if (input.read(byteBuffer.array(), 0, Integer.SIZE / 8) != Integer.SIZE / 8) {
throw new IOException("Error during reading");
}
return byteBuffer.getInt(0);
}

public ByteBuffer readValueFromStream(int size) throws IOException {
ByteBuffer value = ByteBuffer.allocate(size);
if (input.read(value.array(), 0, size) != size) {
throw new IOException("Error during reading");
}
return value;
}

public long getLength() throws IOException {
return randomAccessFile.length();
}

public void close() throws IOException {
byteBuffer.putInt(0, Integer.MIN_VALUE);
output.write(byteBuffer.array());
output.close();
randomAccessFile.close();
}

public void beginUpdate() throws IOException {
output.close();
randomAccessFile.close();
bufferStorageInstance.createNewFile();
input = new BufferedInputStream(new FileInputStream(storageInstance));
output = new BufferedOutputStream(new FileOutputStream(bufferStorageInstance));
}

public void endUpdate() throws IOException {
output.close();
input.close();
bufferStorageInstance.renameTo(storageInstance);
randomAccessFile = new RandomAccessFile(storageInstance, "rw");
output = new BufferedOutputStream(new FileOutputStream(storageInstance, true));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package ru.mipt.java2016.homework.g595.zueva.task2.task3;


import java.nio.ByteBuffer;

public class OptDoubleSerializer implements OptKVStorageSerializer<Double> {

@Override
public ByteBuffer srlzToStr(Double value) {
ByteBuffer serialized = ByteBuffer.allocate(SrlzSize(value));
serialized.putDouble(value);
return serialized;
}

@Override
public Double desrlzFrStr(ByteBuffer input) {
return input.getDouble();
}

@Override
public int SrlzSize(Double value) {
return Double.SIZE / 8;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package ru.mipt.java2016.homework.g595.zueva.task2.task3;
import java.nio.ByteBuffer;
public class OptIntegerSerializer implements OptKVStorageSerializer<Integer> {
@Override
public ByteBuffer srlzToStr(Integer value) {
ByteBuffer serialized = ByteBuffer.allocate(SrlzSize(value));
serialized.putInt(value);
return serialized;
}

@Override
public Integer desrlzFrStr(ByteBuffer input) {
return input.getInt();
}

@Override
public int SrlzSize(Integer value) {
return Integer.SIZE / 8;
}
}
Loading