text:
<file_sep>package com.cg.onlinewalletwithspringboot.repository;

import org.springframework.data.jpa.repository.JpaRepository;

import com.cg.onlinewalletwithspringboot.dto.WalletAccount;
import com.cg.onlinewalletwithspringboot.dto.WalletUser;

public interface OnlineWalletUserRepository extends JpaRepository<WalletUser,Integer> {
	//This method is used get WalletUser for a particular userId
	public WalletUser findByUserId(Integer userID);
	//This method is used get WalletUser for a particular account object
	public WalletUser findByAccount(WalletAccount account);
	//This method is used get WalletUser for a particular loginName
	public WalletUser findByLoginName(String loginName);
	//This method is used get WalletUser for a particular phoneNo
	public WalletUser findByPhoneNo(String phoneNo);
}
<file_sep>package com.cg.onlinewalletwithspringboot.service;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.cg.onlinewalletwithspringboot.dto.Status;
import com.cg.onlinewalletwithspringboot.dto.TransactionHistory;
import com.cg.onlinewalletwithspringboot.dto.WalletAccount;
import com.cg.onlinewalletwithspringboot.dto.WalletUser;
import com.cg.onlinewalletwithspringboot.exception.MyException;
import com.cg.onlinewalletwithspringboot.repository.OnlineWalletAccountRepository;
import com.cg.onlinewalletwithspringboot.repository.OnlineWalletTransactionHistoryRepository;
import com.cg.onlinewalletwithspringboot.repository.OnlineWalletUserRepository;
import com.twilio.Twilio;
import com.twilio.rest.api.v2010.account.Message;
import com.twilio.type.PhoneNumber;

@Service("OnlineWalletService")
public class OnlineWalletServiceImpl implements OnlineWalletService {
	public static final String ACCOUNT_SID = "AC31aba4770528836f973a01e47009fd1a";
	public static final String AUTH_TOKEN = "e<PASSWORD>";

	@Autowired
	private OnlineWalletUserRepository userDao;
	@Autowired
	private OnlineWalletAccountRepository accountDao;
	@Autowired
	private OnlineWalletTransactionHistoryRepository transactionDao;

	/**
	 *author: Venkatesh
	 *Description : This function is used is called when a user registers
	 *              to our wallet.This method adds checks whether the user
	 *              user is already present and then adds
	 *created Date: 08/9/2019
	 *last modified : 08/09/2019
	 *Input : WalletUser object
	 *Output : WalletUser object
	 */
	@Override
	public WalletUser addWalletUser(WalletUser user) throws MyException {
		// TODO Auto-generated method stub
		Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
		List<WalletUser> users = userDao.findAll();
		if(users!=null) {
		for(int i=0;i<users.size();i++) {
			if(users.get(i).getPhoneNo().equals(user.getPhoneNo())){

				throw new MyException("User exists try to login");
			}
		}
		}
		user.setRoles("ROLE_CUSTOMER");
		Validate.validatePhoneNumber(user.getPhoneNo());
		WalletUser modifiedUser = userDao.save(user);
		modifiedUser = userDao.findByUserId(modifiedUser.getUserId());
		modifiedUser.setLoginName(modifiedUser.getUserName()+modifiedUser.getUserId());
		userDao.save(modifiedUser);
		 Message message = Message
	                .creator(new PhoneNumber("+91"+modifiedUser.getPhoneNo()), // to
	                        new PhoneNumber("+18102070628"), // from
	                        "Your online wallet request has been initiated,please wait till the admin approves your account ")
	                .create();

		return modifiedUser;
	}
	/**
	 *author: Venkatesh
	 *Description : This method is used by admin to approve accounts that
	 *              are waiting for approval
	 *created Date: 08/9/2019
	 *last modified : 08/09/2019
	 *Input : Integer accountNo
	 *Output : WalletAccount Object
	 */
	@Override
	public WalletAccount approveAccount(Integer accountNo) throws MyException {
		Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
		WalletAccount account = accountDao.getOne(accountNo);
		if(account!=null) {
			System.out.println(account.getAccountNo());
			account.setAccountStatus(Status.Approved);
			accountDao.save(account);
			WalletUser modifiedUser = userDao.findByAccount(account);
			System.out.println(modifiedUser);
			 Message message = Message
		                .creator(new PhoneNumber("+91"+modifiedUser.getPhoneNo()), // to
		                        new PhoneNumber("+18102070628"), // from
		                        "Hello "+modifiedUser.getUserName()+"Your account has been activated "
		                        		+ "your Login Credentials userName: "+modifiedUser.getLoginName()+" password "+
		                        modifiedUser.getUserPassword()).create();
		}
		return account;
	}
	/**
	 *author: Utkarsh
	 *Description : This method is used to verify the login credentials
	 *created Date: 08/9/2019
	 *last modified : 08/09/2019
	 */
	@Override
	public boolean validateLoginCredentials(String userName, String password) {

		 WalletUser user = userDao.findByLoginName(userName);
	        if(user!=null){
	            if(user.getUserPassword().equals(password)){
	                return true;
	            }
	            else{
	                return false;
	            }
	        }
		return false;
	}
	/**
	 *author: Venkatesh
	 *Description : It is used to get the particular user
	 *created Date: 08/9/2019
	 *last modified : 08/09/2019
	 *Input : String loginName
	 *Output : WalletUser Object
	 */
	@Override
	public WalletUser getUser(String userName) throws MyException {
		WalletUser user=userDao.findByLoginName(userName);
		if(user!=null) {
			return user;
		}
		throw new MyException("User not present");
	}
	/**
	 *author: Venkatesh
	 *Description : It is used to add amount to the user wallet
	 *              This function uses the payment gateway to add the amount
	 *              to the wallet
	 *created Date: 08/9/2019
	 *last modified : 08/09/2019
	 *Input : Integer accountId , Double amount
	 *Output : Double balance
	 */
	@Override
	public Double addAmount(Integer accountId, Double amount) throws MyException {
		Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
		Validate.validateId(accountId);
        if(amount>0){
            WalletAccount account = accountDao.getOne(accountId);
            WalletUser modifiedUser = userDao.findByAccount(account);
            account.setBalance(account.getBalance()+amount);
            accountDao.save(account);
        	TransactionHistory transactionHistory = new TransactionHistory();
			transactionHistory.setAmount(amount);
			modifiedUser.getAccount().setBalance(account.getBalance());
			transactionHistory.setBalance(modifiedUser.getAccount().getBalance());
			transactionHistory.setDateOfTransaction(LocalDateTime.now());
			transactionHistory.setAccount(modifiedUser.getAccount());
			transactionHistory.setDescription("myself");
			transactionDao.save(transactionHistory);
            Message message = Message
	                .creator(new PhoneNumber("+91"+modifiedUser.getPhoneNo()), // to
	                        new PhoneNumber("+18102070628"),"Your account has been credited with amount "+amount+
	                        " Your balance is "+modifiedUser.getAccount().getBalance()
	                        ).create();

        }
        throw new MyException("amount can not be less than zero");
	}
	/**
	 *author: Venkatesh
	 *Description : This function is used to tranfer amount to the
	 *              users who have registered with our wallet
	 *created Date: 08/9/2019
	 *last modified : 08/09/2019
	 *Input : Integer userId , Double amount
	 *Output : Double balance
	 */
	@Override
	public Double transferAmount(Integer userId, String phoneNumber, Double amount) throws MyException {
		Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
		boolean present = false;
		Validate.validateId(userId);
		WalletUser user = userDao.findByUserId(userId);
		List<WalletUser> users = userDao.findAll();
		for(int i=0;i<users.size();i++) {
			if(users.get(i).getPhoneNo().equals(phoneNumber)) {
				present = true;
			}
		}
		if(!present) {
			throw new MyException("User does not exist");
		}
		if(amount<0) {
			throw new MyException("amount can not be less than zero");
		}

		if(user.getAccount().getBalance().compareTo(amount)<0) {
			throw new MyException("Insufficient funds");
		}
		WalletUser toUser = userDao.findByPhoneNo(phoneNumber);
		WalletUser fromUser = userDao.findByUserId(userId);
		fromUser.getAccount().setBalance(fromUser.getAccount().getBalance()-amount);
		TransactionHistory transactionHistory = new TransactionHistory();
		transactionHistory.setAccount(fromUser.getAccount());
		transactionHistory.setBalance(fromUser.getAccount().getBalance());
		transactionHistory.setAmount(amount);
		transactionHistory.setDateOfTransaction(LocalDateTime.now());
		transactionHistory.setDescription("transferred to phone number "+phoneNumber);
		userDao.save(fromUser);
		transactionDao.save(transactionHistory);
		Message message = Message
                .creator(new PhoneNumber("+91"+fromUser.getPhoneNo()), // to
                        new PhoneNumber("+18102070628"),"Your account has been debited with amount "+amount+
                        " Your balance is "+fromUser.getAccount().getBalance()
                        ).create();
		TransactionHistory transaction1 = new TransactionHistory();
		toUser.getAccount().setBalance(toUser.getAccount().getBalance()+amount);
		transaction1.setAccount(toUser.getAccount());
		transaction1.setBalance(toUser.getAccount().getBalance());
		transaction1.setAmount(amount);
		transaction1.setDescription("received from "+fromUser.getPhoneNo());
		transaction1.setDateOfTransaction(LocalDateTime.now());
		userDao.save(toUser);
		transactionDao.save(transaction1);
		Message toMessage = Message
                .creator(new PhoneNumber("+91"+toUser.getPhoneNo()), // to
                        new PhoneNumber("+18102070628"),"Your account has been credited with amount "+amount+" from user "+fromUser.getPhoneNo()+
                        " Your balance is "+toUser.getAccount().getBalance()
                        ).create();
		return amount;
	}
	@Override
	public List<TransactionHistory> getTransactions(Integer accountId,LocalDateTime fromDate,
			LocalDateTime toDate){
		//em.refresh(TransactionHistory.class);
		WalletAccount walletAccount = accountDao.findByAccountNo(accountId);
		List<TransactionHistory> myTransactions = transactionDao.findByWalletAccount(walletAccount);
		System.out.println(myTransactions.size()+" "+fromDate);
		List<TransactionHistory> retTransactions = new ArrayList<TransactionHistory>();
		for(int i=0;i<myTransactions.size();i++) {
			if(myTransactions.get(i).getDateOfTransaction()!=null&&myTransactions.get(i).getDateOfTransaction().compareTo(fromDate)>=0
			   &&myTransactions.get(i).getDateOfTransaction().compareTo(toDate)<=0) {
				retTransactions.add(myTransactions.get(i));
			}
		}
		return retTransactions;
	}

	@Override
	public List<WalletAccount> getAccountsToApprove() {
		// TODO Auto-generated method stub
	    List<WalletAccount> walletAccounts = accountDao.findAll();
	    List<WalletAccount> notApproved = new ArrayList<WalletAccount>();
	    for(int i=0;i<walletAccounts.size();i++) {
	    	if(walletAccounts.get(i).getAccountStatus().toString().equals("WatingForApproval")) {
	    		notApproved.add(walletAccounts.get(i));
	    	}
	    }
		return notApproved;
	}
	@Override
	public WalletUser findByPhoneNo(String phoneNo) {
		// TODO Auto-generated method stub
		return userDao.findByPhoneNo(phoneNo);
	}

}
<file_sep>package com.cg.onlinewalletwithspringboot.service;

import java.time.LocalDateTime;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.cg.onlinewalletwithspringboot.dto.WalletUser;
import com.cg.onlinewalletwithspringboot.exception.MyException;
import com.cg.onlinewalletwithspringboot.repository.OnlineWalletUserRepository;

class Validate {

	@Autowired
	private static OnlineWalletUserRepository userDao;

	static void  validateId(Integer userId) throws MyException {

		String str = ""+userId;

		if(!str.matches("\\d+")) {

			throw new MyException("userId consists only digits");

		}

	}
	static void validateDate(LocalDateTime date) throws MyException {

		if(LocalDateTime.now().isBefore(date)){

			throw new MyException("Invalid date");

		}

	}
	static void validateDuplicate(WalletUser user) throws MyException {

		List<WalletUser> users = userDao.findAll();
		if(users!=null) {
		for(int i=0;i<users.size();i++) {
			if(users.get(i).getPhoneNo().equals(user.getPhoneNo())) {
				throw new MyException("User exists try to login");
			}
		}
		}

	}

	static void validatePhoneNumber(String number) throws MyException {

		if(number.matches("[a-z][A-Z]+")) {
			throw new MyException("number contains only digits");
		}

		if(!number.matches("\\d{10}")){

			throw new MyException("Phone number must be 10 digits");

		}

	}

}<file_sep>package com.cg.onlinewalletwithspringboot.configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.domain.AuditorAware;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
/**
 *author: Venkatesh
 *created Date: 08/10/2019
 *last modified : 11/10/2019
 */
@Configuration
@EnableJpaAuditing(auditorAwareRef = "auditorProvider")
public class OnlineWalletConfiguration {
	/**
	 *author: Venkatesh
	 *Description : this method is used to return the annotated fields value with
	 *              custom values
	 *created Date: 08/10/2019
	 *last modified : 11/10/2019
	 *output : AuditorAwareImpl Object
	 */
	    @Bean
	    public AuditorAware<String> auditorProvider() {
	        return new AuditorAwareImpl();
	    }
}
<file_sep>package com.cg.onlinewalletwithspringboot.repository;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;

import com.cg.onlinewalletwithspringboot.dto.TransactionHistory;
import com.cg.onlinewalletwithspringboot.dto.WalletAccount;

public interface OnlineWalletTransactionHistoryRepository extends JpaRepository<TransactionHistory,Integer>{
	public List<TransactionHistory> findByWalletAccount(WalletAccount walletAccount);
}
<file_sep>package com.cg.onlinewalletwithspringboot.service;

import java.util.Optional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;

import com.cg.onlinewalletwithspringboot.dto.WalletUser;
import com.cg.onlinewalletwithspringboot.dto.WalletUserDetails;
import com.cg.onlinewalletwithspringboot.exception.MyException;
import com.cg.onlinewalletwithspringboot.repository.OnlineWalletUserRepository;
@Service("walletuserdetailsservice")
public class WalletUserDetailsService implements  UserDetailsService {

	@Autowired
	OnlineWalletService service = new OnlineWalletServiceImpl();

	@Override
	public UserDetails loadUserByUsername(String loginName) throws UsernameNotFoundException {
		// TODO Auto-generated method stub
		Optional<WalletUser> user;
		try {
			System.out.println(loginName);
			user = Optional.of(service.getUser(loginName));
			System.out.println(user.get().getPhoneNo());
			user.orElseThrow(() -> new UsernameNotFoundException("Not Found: "+loginName));
			return user.map(WalletUserDetails::new).get();
		} catch (MyException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return null;

	}

}
<file_sep>package com.cg.onlinewalletwithspringboot.dto;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;

import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@Entity
@EntityListeners(AuditingEntityListener.class)
public class WalletUser {
	@Id
	@GeneratedValue()
	private  Integer userId;
	private String userName;
	private String userPassword;
	private String phoneNo;
	private String loginName;
	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "account_no",referencedColumnName = "accountNo")
	WalletAccount account;
	public String getRoles() {
		return roles;
	}

	public void setRoles(String roles) {
		this.roles = roles;
	}

	private String roles;

	public WalletUser() {

	}

	public Integer getUserId() {
		return userId;
	}

	public void setUserId(Integer userId) {
		this.userId = userId;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getUserPassword() {
		return userPassword;
	}

	public void setUserPassword(String userPassword) {
		this.userPassword = userPassword;
	}

	public String getPhoneNo() {
		return phoneNo;
	}

	public void setPhoneNo(String phoneNo) {
		this.phoneNo = phoneNo;
	}

	public String getLoginName() {
		return loginName;
	}

	public void setLoginName(String loginName) {
		this.loginName = loginName;
	}

	public WalletAccount getAccount() {
		return account;
	}

	public void setAccount(WalletAccount account) {
		this.account = account;
	}

}
<file_sep><%@page import="com.cg.onlinewalletwithspringboot.dto.WalletUser"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@taglib prefix="a" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>

<meta charset="ISO-8859-1">
<title>Insert title here</title>

<body background="<c:url value= "/resources/images/trans.jpg"/>">

<%
WalletUser user=(WalletUser)request.getAttribute("user");
session.setAttribute("user",user);
System.out.println(user.getPhoneNo());
Cookie cookies[] = request.getCookies() ;
boolean flag=false;
   for(Cookie c : cookies){
	   if(c.getName().equals("status")){
		   System.out.println(c.getValue());
		  if(c.getValue().equals("loggedin")){
			  flag=true;
			  break;
		  }
	   }
   }
   if(!flag){
	   System.out.println("hii");
	   response.sendRedirect("login");
   }

%>

transaction Id
transaction Date
transaction amount
transaction Description
transaction balance

${pro.transactionId}
${pro.dateOfTransaction}
${pro.amount}
${pro.description}
${pro.balance}

Get Excel Sheet

<file_sep>package com.cg.onlinewalletwithspringboot.service;

import java.time.LocalDateTime;
import java.util.List;

import com.cg.onlinewalletwithspringboot.dto.TransactionHistory;
import com.cg.onlinewalletwithspringboot.dto.WalletAccount;
import com.cg.onlinewalletwithspringboot.dto.WalletUser;
import com.cg.onlinewalletwithspringboot.exception.MyException;

public interface OnlineWalletService {
	public WalletUser addWalletUser(WalletUser user) throws MyException;
	public WalletAccount approveAccount(Integer accountNo) throws MyException;
	public boolean validateLoginCredentials(String userName, String password);
	public WalletUser getUser(String userName) throws MyException;
	Double addAmount(Integer accountId, Double amount) throws MyException;
	Double transferAmount(Integer userId, String phoneNumber, Double amount) throws MyException;
	public List<TransactionHistory> getTransactions(Integer accountId,LocalDateTime fromDate,
			LocalDateTime toDate);
	public List<WalletAccount> getAccountsToApprove();
	public WalletUser findByPhoneNo(String phoneNo);
}
<file_sep>package com.cg.onlinewalletwithspringboot.dto;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.envers.Audited;
import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

@Entity
@EntityListeners(AuditingEntityListener.class)
@Audited
public class WalletAccount {
	@Id
	@GeneratedValue
	private Integer accountNo;
	private Double balance = 0.0;
	@OneToMany(mappedBy = "walletAccount",cascade = CascadeType.ALL,fetch = FetchType.EAGER)
	List<TransactionHistory> transactionList;
	@Enumerated(EnumType.STRING)
	private Status accountStatus;
	@OneToOne(cascade = CascadeType.ALL,mappedBy = "account")
	private WalletUser user;
	 @CreatedBy
	 protected String createdBy;
	    @CreatedDate
	    @Temporal(TemporalType.TIMESTAMP)
	    protected Date creationDate;
	    @LastModifiedBy
	    protected String lastModifiedBy;
	    @LastModifiedDate
	    @Temporal(TemporalType.TIMESTAMP)
	    protected Date lastModifiedDate;

	public WalletAccount() {
		this.balance=0.0;
		this.accountStatus=Status.WatingForApproval;
		this.transactionList=new ArrayList<TransactionHistory>(0);
	}

	public WalletAccount(Integer accountNo, List<TransactionHistory> transactionList) {
		super();
		this.accountNo = accountNo;
		this.balance = 0.0;
		this.transactionList = transactionList;
		this.accountStatus = Status.WatingForApproval;
	}

	public Integer getAccountNo() {
		return accountNo;
	}

	public void setAccountNo(Integer accountNo) {
		this.accountNo = accountNo;
	}

	public Double getBalance() {
		return balance;
	}

	public void setBalance(Double balance) {
		this.balance = balance;
	}

	@OneToMany(mappedBy = "walletAccount",fetch = FetchType.LAZY)
	public List<TransactionHistory> getTransactionList() {
		return transactionList;
	}

	public void setTransactionList(List<TransactionHistory> transactionList) {
		this.transactionList = transactionList;
	}

	public Status getAccountStatus() {
		return accountStatus;
	}

	public void setAccountStatus(Status accountStatus) {
		this.accountStatus = accountStatus;
	}

}
<file_sep>package com.cg.onlinewalletwithspringboot;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.test.context.junit4.SpringRunner;

import com.cg.onlinewalletwithspringboot.dto.Status;
import com.cg.onlinewalletwithspringboot.dto.WalletAccount;
import com.cg.onlinewalletwithspringboot.dto.WalletUser;
import com.cg.onlinewalletwithspringboot.exception.MyException;
import com.cg.onlinewalletwithspringboot.repository.OnlineWalletUserRepository;
import com.cg.onlinewalletwithspringboot.service.OnlineWalletService;

/**
 * Author:Utkarsh
 * Created: 12/10/19
 * Last modified: 12/10/19
 * Description: Spring Boot testing
 *
 */
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class OnlinewalletwithspringbootApplicationTests {

	@Autowired
	TestRestTemplate restTemplate;

	@Autowired
	OnlineWalletService walletService;

	@Test
	public void checkViewHomePage() {
		String str= restTemplate.getForObject("/", String.class);
		assertThat(str.equals("home"));
	}

	@Test
	public void checkLoginPage() {
		String str= restTemplate.getForObject("/login", String.class);
		assertThat(str.equals("login"));
	}

	@Test
	public void checkRegistrationPage() {
		String str= restTemplate.getForObject("/getRegistrationDetails", String.class);
		assertThat(str.equals("registration"));
	}

	@Test
	public void checkUserFunctionalitiesPage() {
		String str= restTemplate.getForObject("/userPage", String.class);
		assertThat(str.equals("UserFunctionalitiesPage"));
	}

	@Test
	public void checkAdminFunctionalitiesPage() {
		String str= restTemplate.getForObject("/getApproveAccountNo", String.class);
		assertThat(str.equals("AdminFunctionalitiesPage"));
	}

	@Test
	public void checkAddAmountPage() {
		String str= restTemplate.getForObject("/addAmount", String.class);
		assertThat(str.equals("addAmount"));
	}

	@Test
	public void checkApproveAccountPage() {
		String str= restTemplate.getForObject("/approveAccount", String.class);
		assertThat(str.equals("approveAccount"));
	}

	/**Service Layer
	 * Author: Utkarsh
	 * Created: 12/10/19
	 * Last modified: 12/10/19
	 * Description: Spring Boot testing
	 * **/
	@Test
	public void checkAddWalletUserName() throws MyException {

//		WalletUser user = new WalletUser();
//		user.setUserName("Surya");
//		user.setUserPassword("<PASSWORD>");
//		user.setPhoneNo("9003432137");

		assertEquals("Surya", walletService.findByPhoneNo("9003432137").getUserName());
		//assertNotNull(walletService.addWalletUser(user));
	}

	@Test
	public void checkAddWalletUserPassword() throws MyException {

		assertEquals("<PASSWORD>", walletService.findByPhoneNo("9003432137").getUserPassword());
	}

	@Test
	public void checkAddWalletUserPhoneNo() throws MyException {

		assertEquals("Surya", walletService.findByPhoneNo("9003432137").getUserName());
	}

	@Test
	public void checkApproveAccount() throws MyException {

		WalletUser user = walletService.findByPhoneNo("8319780328");

		assertEquals(user.getAccount().getAccountStatus(),Status.Approved);

	}
	@Test
	public void checkAddAmount()  throws MyException {
		//WalletAccount account=new WalletAccount();
		Double amount = walletService.findByPhoneNo("8639052501").getAccount().getBalance();

		walletService.addAmount(1, 100.00);
		System.out.println(amount);
		Double amount2 = walletService.findByPhoneNo("8639052501").getAccount().getBalance()- 100.00;
		System.out.println(amount2);
		assertEquals(amount,amount2);

	}

	@Test
	public void checkTransferAmount()  throws MyException {
		//WalletAccount account=new WalletAccount();
		//WalletAccount account=new WalletAccount();
		Double amount = walletService.findByPhoneNo("8319780328").getAccount().getBalance();
		walletService.transferAmount(1,"8319780328", 100.00);
		Double amount2 = walletService.findByPhoneNo("8319780328").getAccount().getBalance()-100.00;
		assertEquals(amount,amount2);
	}

}
<file_sep>package com.cg.onlinewalletwithspringboot.dto;

import java.time.LocalDateTime;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

import org.hibernate.envers.Audited;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@Entity
@EntityListeners(AuditingEntityListener.class)
@Audited
public class TransactionHistory {

	@Id
	@GeneratedValue
	private Integer transactionId;
	private String description;
	private LocalDateTime dateOfTransaction;
	private Double amount;
	private Double balance;
	@ManyToOne(cascade = CascadeType.ALL,fetch = FetchType.EAGER )
	@JoinColumn
	private WalletAccount walletAccount;

	public TransactionHistory() {

	}

	public TransactionHistory(String description, Integer transactionId, LocalDateTime dateOfTransaction, Double amount,
			Double balance, WalletAccount account) {
		super();
		this.description = description;
		this.transactionId = transactionId;
		this.dateOfTransaction = dateOfTransaction;
		this.amount = amount;
		this.balance = balance;
		this.walletAccount = account;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public Integer getTransactionId() {
		return transactionId;
	}

	public void setTransactionId(Integer transactionId) {
		this.transactionId = transactionId;
	}

	public LocalDateTime getDateOfTransaction() {
		return dateOfTransaction;
	}

	public void setDateOfTransaction(LocalDateTime dateOfTransaction) {
		this.dateOfTransaction = dateOfTransaction;
	}

	public Double getAmount() {
		return amount;
	}

	public void setAmount(Double amount) {
		this.amount = amount;
	}

	public Double getBalance() {
		return balance;
	}

	public void setBalance(Double balance) {
		this.balance = balance;
	}

	public WalletAccount getAccount() {
		return walletAccount;
	}

	public void setAccount(WalletAccount account) {
		this.walletAccount = account;
	}

}

branch_name: refs/heads/venkatesh

languages:
Java
Java Server Pages

repo_name: hiivenky/springboot


text:
<repo_name>pawlakp/QR-Scanner<file_sep>/README.md
# QR-Scanner

Kod aplikacji Czytnika QR.
Aplikacja odróżnia tekst, VCard, linki oraz Geo tagi.
Umożliwia przejście do odczytanego linku z kodu qr.

Użyte biblioteki: ZXing, Karumi/Dexter.
<file_sep>/app/src/main/java/com/example/myapplication/MainActivity.java
package com.example.myapplication;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.Manifest;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

import com.example.myapplication.Model.QRGeoModel;
import com.example.myapplication.Model.QRUrlModel;
import com.example.myapplication.Model.QRVCardModel;
import com.google.zxing.Result;
import com.karumi.dexter.Dexter;
import com.karumi.dexter.PermissionToken;
import com.karumi.dexter.listener.PermissionDeniedResponse;
import com.karumi.dexter.listener.PermissionGrantedResponse;
import com.karumi.dexter.listener.PermissionRequest;
import com.karumi.dexter.listener.single.PermissionListener;

import me.dm7.barcodescanner.zxing.ZXingScannerView;

public class MainActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {
    private ZXingScannerView scannerView;
    private TextView txtResult;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Inicjlaizacja
        scannerView=(ZXingScannerView)findViewById(R.id.zxscan);
        txtResult=(TextView)findViewById(R.id.txt_result);

        //Zezwolenie na dostęp do kamery
        Dexter.withActivity(this)
                .withPermission(Manifest.permission.CAMERA)
                .withListener(new PermissionListener() {
                    @Override
                    public void onPermissionGranted(PermissionGrantedResponse response) {
                        Toast.makeText(MainActivity.this, "Zezwolono na dostęp do kamery", Toast.LENGTH_SHORT).show();
                            scannerView.setResultHandler(MainActivity.this);
                            scannerView.startCamera();
                    }

                    @Override
                    public void onPermissionDenied(PermissionDeniedResponse response) {
                        Toast.makeText(MainActivity.this, "Musisz zezwolić na dostęp do kamery", Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {

                    }
                })
                .check();

    }

    //wznowienie kamery
    @Override
    protected void onResume() {
        super.onResume();
        scannerView.startCamera();
    }
    //wyłączenie kamery
    @Override
    protected void onStop() {
        super.onStop();
        scannerView.stopCamera();

    }

    @Override
    public void handleResult(Result rawResult) {
        //rezultat skanowania
        processRawResult(rawResult.getText());

    }

    private void processRawResult(String text) {
        if(text.startsWith("BEGIN:")) {
            String[] tokens = text.split("\n");
            QRVCardModel qrvCardModel = new QRVCardModel();
            for (int i = 0; i < tokens.length; i++) {
                if (tokens[i].startsWith("BEGIN:")) {
                    qrvCardModel.setType(tokens[i].substring("BEGIN:".length())); //Remove BEGIN: to get Type
                } else if (tokens[i].startsWith("N:")) {
                    qrvCardModel.setName(tokens[i].substring("N:".length()));
                } else if (tokens[i].startsWith("ORG:")) {
                    qrvCardModel.setOrg(tokens[i].substring("ORG:".length()));
                } else if (tokens[i].startsWith("TEL:")) {
                    qrvCardModel.setTel(tokens[i].substring("TEL:".length()));
                } else if (tokens[i].startsWith("URL:")) {
                    qrvCardModel.setUrl(tokens[i].substring("URL:".length()));
                } else if (tokens[i].startsWith("EMAIL:")) {
                    qrvCardModel.setEmail(tokens[i].substring("EMAIL:".length()));
                } else if (tokens[i].startsWith("ADR:")) {
                    qrvCardModel.setAddress(tokens[i].substring("ADR:".length()));
                } else if (tokens[i].startsWith("NOTE:")) {
                    qrvCardModel.setNote(tokens[i].substring("NOTE:".length()));
                } else if (tokens[i].startsWith("SUMMARY:")) {
                    qrvCardModel.setSummary(tokens[i].substring("SUMMARY:".length()));
                } else if (tokens[i].startsWith("DTSTART:")) {
                    qrvCardModel.setDtstart(tokens[i].substring("DTSTART:".length()));
                } else if (tokens[i].startsWith("DTEND:")) {
                    qrvCardModel.setDtend(tokens[i].substring("DTEND:".length()));
                }

                //pokaz rezultat
                txtResult.setText(qrvCardModel.getType());
            }
        }
            else if(text.startsWith("http://") || text.startsWith("https://") || text.startsWith("www.")) {

            QRUrlModel qrUrlModel = new QRUrlModel(text);
            txtResult.setText(qrUrlModel.getUrl());
            //metoda pozwalajaca na otworzenie linku
            ResultWeb(qrUrlModel.getUrl());
        }
            else if(text.startsWith("geo:")){
            QRGeoModel qrGeoModel=new QRGeoModel();
            String delims="[   ?q= ]+";
            String tokens[]=text.split(delims);

            for(int i=0;i<tokens.length;i++)
            {
                if(tokens[i].startsWith(" geo:")){
                    qrGeoModel.setLat(tokens[i].substring("geo:".length()));
                }
        }
            qrGeoModel.setLat(tokens[0].substring("geo:".length()));
            qrGeoModel.setLng(tokens[1]);
            qrGeoModel.setGeo_place(tokens[2]);

            txtResult.setText(qrGeoModel.getLat()+"/"+qrGeoModel.getLng());
        }
        else{
            //pokaz tekst
            txtResult.setText(text);
        }
        scannerView.resumeCameraPreview(MainActivity.this);
    }

    //metoda pozwalajaca na otworzenie linku
    public void ResultWeb(String text){
        final String myResult = text;
         onStop();
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("Rezultat");
            builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                  onResume();
                }
            });
            builder.setNeutralButton("GO", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(myResult));
                    startActivity(intent);
                }
            });
            builder.setMessage(text);
            AlertDialog alert1 = builder.create();
            alert1.show();

    }

}

branch_name: refs/heads/master

languages: Java Markdown

repo_language: Java

repo_name: pawlakp/QR-Scanner


text:
<file_sep><?php

/*
 * This file is part of StyleCI.
 *
 * (c) <NAME> <<EMAIL>>
 * (c) <NAME> <<EMAIL>>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace StyleCI\StyleCI\Http\Controllers;

use Illuminate\Contracts\Auth\Guard;
use Illuminate\Support\Facades\Redirect;
use Laravel\Socialite\GithubProvider;
use StyleCI\StyleCI\Commands\LoginCommand;

/**
 * This is the auth controller class.
 *
 * @author <NAME> <<EMAIL>>
 * @author <NAME> <<EMAIL>>
 */
class AuthController extends AbstractController
{
    /**
     * Create a new authentication controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();

        $this->middleware('guest', ['except' => ['handleLogout']]);
    }

    /**
     * Connect to the GitHub provider using OAuth.
     *
     * @param \Laravel\Socialite\GithubProvider $socialite
     *
     * @return \Illuminate\Http\RedirectResponse
     */
    public function handleLogin(GithubProvider $socialite)
    {
        $socialite->scopes([
            'read:org',
            'user:email',
            'public_repo',
            'admin:repo_hook',
        ]);

        return $socialite->redirect();
    }

    /**
     * Get the user access token to save notifications.
     *
     * @param \Laravel\Socialite\GithubProvider $socialite
     *
     * @return \Illuminate\Http\Response
     */
    public function handleCallback(GithubProvider $socialite)
    {
        $socialiteUser = $socialite->user();

        $username = $socialiteUser->nickname;
        $name = trim(preg_replace('/[^A-Za-zÀÁÅÃÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ ]/', '', $socialiteUser->name ?: $username));

        $this->dispatch(new LoginCommand($socialiteUser->id, $name, $username, $socialiteUser->email, $socialiteUser->token));

        return Redirect::route('repos_path')->with('info', '
Our new config system is live!

You can read all about this over on our blog: https://blog.styleci.io/redefining-configuration.
');
    }

    /**
     * Logout a user account.
     *
     * @param \Illuminate\Contracts\Auth\Guard $auth
     *
     * @return \Illuminate\Http\Response
     */
    public function handleLogout(Guard $auth)
    {
        $auth->logout();

        return Redirect::route('home');
    }
}

repo_language: PHP

repo_name: liujingyu/StyleCI


text:
<file_sep># LED Meanings (Pixhawk Series)

[Pixhawk-series flight controllers](../flight_controller/pixhawk_series.md) have an RGB LED to indicate the current status of the vehicle. The image below shows the relationship between LED and vehicle status.

> **Warning** It is possible to have a GPS lock (Green LED) and still not be able to arm the vehicle because PX4 has not yet [passed preflight checks](../flying/pre_flight_checks.md). **A valid global position estimate is required to takeoff!**

> **Tip** In the event of an error (blinking red), or if the vehicle can't achieve GPS lock (change from blue to green),
  check for more detailed status information in *QGroundControl* including calibration status,
  and errors messages reported by the [Preflight Checks (Internal)](../flying/pre_flight_checks.md).
  Also check that the GPS module is properly attached, Pixhawk is reading your GPS properly, and that the GPS is sending a proper GPS position.

![LED meanings](../../images/led_meanings.gif)

* **[Solid Blue] Armed, No GPS Lock:** Indicates vehicle has been armed and has no position lock from a GPS unit.
When vehicle is armed, PX4 will unlock control of the motors, allowing you to fly your drone.
As always, exercise caution when arming, as large propellers can be dangerous at high revolutions.
Vehicle cannot perform guided missions in this mode.

* **[Pulsing Blue] Disarmed, No GPS Lock:** Similar to above, but your vehicle is disarmed.
This means you will not be able to control motors, but all other subsystems are working.

* **[Solid Green] Armed, GPS Lock:** Indicates vehicle has been armed and has a valid position lock from a GPS unit.
When vehicle is armed, PX4 will unlock control of the motors, allowing you to fly your drone.
As always, exercise caution when arming, as large propellers can be dangerous at high revolutions.
In this mode, vehicle can perform guided missions.

* **[Pulsing Green] Disarmed, GPS Lock:** Similar to above, but your vehicle is disarmed.
  This means you will not be able to control motors, but all other subsystems including GPS position lock are working.

* **[Solid Purple] Failsafe Mode:** This mode will activate whenever vehicle encounters an issue during flight,
such as losing manual control, a critically low battery, or an internal error.
During failsafe mode, vehicle will attempt to return to its takeoff location, or may simply descend where it currently is.

* **[Solid Amber] Low Battery Warning:** Indicates your vehicle's battery is running dangerously low.
After a certain point, vehicle will go into failsafe mode. However, this mode should signal caution that it's time to end
this flight.

* **[Blinking Red] Error / Setup Required:** Indicates that your autopilot needs to be configured or calibrated before flying.
Attach your autopilot to a Ground Control Station to verify what the problem is.
If you have completed the setup process and autopilot still appears as red and flashing, there may be another error.

repo_language: Markdown


text:
<repo_name>gulua0306/is<file_sep>/src/pack/Zarpl.java
package pack; //название пакета pack
/*	указывает пакет "pack", в котором находится файл класса
Пакет (package) — это некий контейнер, который используется для того, чтобы изолировать имена классов.*/

// класс для создания интерфейса  РАСЧЕТ ЗАРПЛАТЫ

import javax.swing.*; // библиотека для графического интерфейса
import java.awt.event.*;
import java.awt.*;
/*	java. - Все стандартные классы, поставляемые с системой Java, хранятся в пакете j ava.
Подключение пакета awt, содержащего базовые графические функции:GridLayout, BorderLayout и т.д.
В отличие от java.awt, javax.swing имеет более гибкую систему управления
и более широкий набор функций
Подключаем объект event, который содержит свойства, описывающие некое событие.
Каждый раз, когда происходит какое-либо событие,
объект Event передается соответствующей программе обработки.
Используемым событием в нашей программе являются ACTION события.
*/

public class Zarpl extends JPanel { /*	(Public)модификатор доступа, который позволяет программисту управлять видимостью любого метода и любой переменной.
	В данном случае модификатор доступа public означает, что класс Zarpl виден и доступен любому классу.
		В этой строке использовано зарезервированное слово class.
		Оно говорит транслятору, что мы собираемся описать новый класс Zarpl.
		описываем Otp как класс доступный другим классам (public)
	класс наследует функции элемента JPanel (extends jpanel)
	{ <- Полное описание класса располагается между открывающей
	фигурной скобкой в первой строке и парной ей закрывающей фигурной скобкой -> }
		 */

    // объявление компонентов на уровне класса

	/**
	 *
	 */
	private static final long serialVersionUID = 1L;
	private JPanel DanZarp, PokazZarp; /* 	объявляем Панели (JPanel), доступные только внутри класса (private).
	DanZarp - панель которая содержит надписи и строки: .......
	в которые пользователь должен ввести данные.
 	PokazOtp - панель которая содержит внутри кнопку
 	"Рассчитать зарплату" которая описанная ниже
 	*/
	private JButton PokazRasBut; /* объявляем кнопку (будет находится на панел PokazZarp).
    Кнопка PokazRasBut - для показа расчетов о зарплате (при нажатии открывается новое окно
    в котором можно будет увидеть расчет зарплаты) Доступно только внутри класса (private)*/
	private JLabel Label_1,Label_2,Label_3,Label_4, Label_5,Label_6,Label_7,Label_8,Label_9,Label_10,Label_11,Label_12; /* Объявляем label. Используется для показа текста. Данные поля доступны только внутри класса (private).*/
	public static JTextField Text_oklad,Text_kol_det,Text_do_18,Text_prem, Text_dni, Text_rab_dni; // текстовые поля в которые пользователь вводит данные
	public static JCheckBox Box_3000, Box_500; /* JCheckBox - это название класса Java Swing, который представляет компонент-флажок или чекбокс.
  	Это компонент, который имеет два состояния включен и выключен.
  	Причем одно состояние естественно исключает другое.
  	Соответствующее состояние компонента JCheckBox показывается галочкой.
  	Если JCheckBox находится во включенном состоянии – галочка отображается,
  	если в выключенном – галочки нет.
  	Box_3000 - для обозначения есть ли стандартный вычет в размере 3000руб. Box_500 - в размере 500руб. */

	public Zarpl()  {
		/*	Описание метода Zarpl
		метод видим и доступен для других классов (public)
		круглые скобки говорят о том что мы описываем метод и перед ними идет его название
		Внутри скобок можно указать данные (аргумерты или параметры), которые передаются методу
		*/

		setLayout (new BorderLayout());/*	Оператор new создает экземпляр указанного класса
	  	Метод setLayout - Вызов менеджера компоновки, который задает определенный порядок панелей в контейнере.
 		Менеджер размещения BorderLayout - тип разбивки контейнера, при котором всё пространство контейнера разбивается
 		на пять частей. В каждой из этих частей располагается один компонент.
 		При добавлении компонента на контейнер с BorderLayout разработчик обязательно указывает,
 		куда именно он хочет поместить компонент.
 		*/

		//создаем остальные панели
        DanZarp = new JPanel(); /* панель содержит поля в которые следует ввести данные необходимые для расчета зарплаты
          = new JPanel():  "=" - оператор присваивания переменной DanZarp функций класса JPanel.
      	Оператор new создает экземпляр указанного класса
      	JPanel() - класс. Является компонентом-контейнером для содержания других частей интерфейса.*/
        PokazZarp = new JPanel(); // панель содержит кнопку Рассчитать (отдельная панель для кнопки нужна для того чтобы кнопка была посередине)

        //установливаем менеджера расположения для панелей
        DanZarp.setLayout(new FlowLayout(FlowLayout.LEFT, 7, 15)); /*setLayout-Вызов менеджера компоновки, который задает определенный порядок панелей в контейнере DanZarp.
      	Менеджер размещения FlowLayout размещает компоненты подобно тому как текстовый редактор располагает слова.
      	Компоненты располагаются друг за другом слева направо и сверху вниз, начиная с левого верхнего угла.
      	Если строка заполнена и следующий компонент в ней не помещается, то он переносится на новую строку.
      	Вокруг каждого компонента оставляется небольшое свободное пространство.
       	Оператор new создает экземпляр указанного класса
       	7 - горизонтальный отступ, 15 - вертикальный
     	*/
        PokazZarp.setLayout(new GridLayout(1, 1)); /*	setLayout-Вызов менеджера компоновки, который задает определенный порядок панелей в контейнере PokazZarp.
      	Менеджер размещения GridLayout расставляет компоненты в таблицу
      	с заданным в конструкторе числом строк rows и столбцов columns
      	на панели будет 1 строка, 1 столбец,
       	Это нужно для того чтобы разместить кнопку по центру в плане широты.
       	Оператор new создает экземпляр указанного класса
     	*/

        //добавляем панели DanZarp и PokazZarp на главную панель
        add(DanZarp, BorderLayout.CENTER); /*	add - добавляет указанный компонент DanZarp в контейнер Zarp
      	панель DanZarp, на которой находятся поля ввода текста и поля подписей,
        BorderLayout функция размещения в одной из 5 частей (EAST, WEST, NORTH, SOUTH, CENTER)
        панель DanZarp находится в центре
    	*/
        add(PokazZarp, BorderLayout.SOUTH);  /*	add - добавляет указанный компонент PokazZarp в контейнер Zarp
  		панель PokazZarp, на которой находятся поля ввода текста и поля подписей,
    	BorderLayout функция размещения в одной из 5 частей (EAST, WEST, NORTH, SOUTH, CENTER)
    	панель PokazZarp находится в центре
     	*/

        //добавить кнопки и текстовые поля на панели
        //описываем метод добавления кнопок и других компонентов на панели. Метод доступен только в данном классе

        //создаем кнопку
    	PokazRasBut = new JButton("Рассчитать заработную плату"); /*	PokazRasBut - кнопка "расчитать данные"
      	= new JButton():  "=" - оператор присваивания переменной DanZarp функций класса JButton.
      	Оператор new создает экземпляр указанного класса
      	JButton() - класс. Является компонентом-кнопкой. В скобках указана надпись содержащаяся на кнопке.
     	*/

        //создать текстовые метки
    	Label_1 = new JLabel("1. Оклад (тарифная ставка):", JLabel.LEFT);
    	/*	Label_1 - лейбл содержащий надпись "оклад(тарифная ставка)" рядом с текстовым полем
	  	= new JLabel():  "=" - оператор присваивания переменной KolvoLabel функций класса JLabel.
      	Оператор new создает экземпляр указанного класса
      	JLabel() - класс. Является компонентом-лейблом-областью с обычным текстом.
      	В скобках указана надпись содержащаяся в этой области.
	 	*/
    	Label_2 = new JLabel("рублей", JLabel.LEFT); //текст внутри компонента label находится слева
    	Label_3 = new JLabel("2. Количество отработанных дней: ", JLabel.LEFT);
    	Label_4 = new JLabel("3. Количество рабочих дней в месяце: ", JLabel.LEFT);
    	Label_5 = new JLabel("4. Стандартные вычеты", JLabel.LEFT);
    	Label_6 = new JLabel("    5.1. Стандартный вычет на ребенка:", JLabel.LEFT);
    	Label_7 = new JLabel("           Количество детей:", JLabel.LEFT);
    	Label_8 = new JLabel("           из них в возрасте до 18 лет и учащиеся
           очной формы обучения до 24 лет:", JLabel.LEFT);/*текст в Label написан с помощью html кода. Тег   - пробел в html (для отображения отступов). Тег
 - переход на след.строку*/
    	Label_9 = new JLabel("    4.2. Стандартный вычет в размере 3 000 рублей
            для лиц, получивших инвалидность", JLabel.LEFT);
    	Label_9.setToolTipText("Подробнее в Налоговом кодексе РФ, статья 218");// всплывающая подсказка при наведении на текст "Стандартный вычет в размере 3000 руб..."
    	Label_10 = new JLabel("    4.3. Стандартный вычет в размере 500 рублей
             для участников войны, пострадавших от
             радиации и т.д.", JLabel.LEFT);
    	Label_10.setToolTipText("Подробнее в Налоговом кодексе РФ, статья 218");// всплывающая подсказка при наведении на текст "Стандартный вычет в размере 500 руб..."
    	Label_11 = new JLabel("5. Премиальные в размере ", JLabel.LEFT);
    	Label_12 = new JLabel("%", JLabel.LEFT);
    	/*= new JLabel():  "=" - оператор присваивания переменной KolvoLabel функций класса JLabel.
      	Оператор new создает экземпляр указанного класса
      	JLabel() - класс. Является компонентом-лейблом-областью с обычным текстом.
      	В скобках указана надпись содержащаяся в этой области.
	 	*/

        //создать текстовые поля
    	Text_oklad = new JTextField("", 4);
    	/*	Text_oklad - текстовое поле в которое мы будем вводить размер оклада
		new JTextField():  "=" - оператор присваивания переменной Text_oklad функций класса JTextField.
		Оператор new создает экземпляр указанного класса
		JTextField() - класс. Является компонентом-текстовым полем.
		4 - размер тектового поля, "" - обозначаем что в данном поле не бует никаких записей
 		*/
    	Text_oklad.setMargin(new Insets(2, 5, 2, 5));//установка внутренних отступов для текстового поля (2-верхний отступ, 5-левый, 2-нижний, 5-правый)
    	Text_oklad.setToolTipText("Введите размер оклада в рублях");//всплывающая подсказка при наведении на текстовое поле

    	Text_dni = new JTextField("", 2);
    	/*	Text_oklad - текстовое поле в которое мы будем вводить количество отработанных дней
		new JTextField():  "=" - оператор присваивания переменной Text_oklad функций класса JTextField.
		Оператор new создает экземпляр указанного класса
		JTextField() - класс. Является компонентом-текстовым полем.
		2 - размер тектового поля, "" - обозначаем что в данном поле не бует никаких записей
 		*/
    	Text_dni.setMargin(new Insets(2, 5, 2, 5));//установка внутренних отступов для текстового поля (2-верхний отступ, 5-левый, 2-нижний, 5-правый)
    	Text_dni.setToolTipText("Введите количество отработанных дней");//всплывающая подсказка при наведении на текстовое поле

    	Text_rab_dni = new JTextField("", 2);
    	/*	Text_oklad - текстовое поле в которое мы будем вводить количество рабочих дней в месяце
		new JTextField():  "=" - оператор присваивания переменной Text_oklad функций класса JTextField.
		Оператор new создает экземпляр указанного класса
		JTextField() - класс. Является компонентом-текстовым полем.
		2 - размер тектового поля, "" - обозначаем что в данном поле не бует никаких записей
 		*/
    	Text_rab_dni.setMargin(new Insets(2, 5, 2, 5));//установка внутренних отступов для текстового поля (2-верхний отступ, 5-левый, 2-нижний, 5-правый)
    	Text_rab_dni.setToolTipText("Введите количество рабочих дней в месяце");//всплывающая подсказка при наведении на текстовое поле

    	Text_kol_det = new JTextField("", 4);
    	/*	Text_oklad - текстовое поле в которое мы будем вводить количество детей
		new JTextField():  "=" - оператор присваивания переменной Text_oklad функций класса JTextField.
		Оператор new создает экземпляр указанного класса
		JTextField() - класс. Является компонентом-текстовым полем.
		4 - размер тектового поля, "" - обозначаем что в данном поле не бует никаких записей
 		*/
    	Text_kol_det.setMargin(new Insets(2, 5, 2, 5));//установка внутренних отступов для текстового поля (2-верхний отступ, 5-левый, 2-нижний, 5-правый)
    	Text_kol_det.setToolTipText("Введите количество детей.
Если детей нет - введите 0");//всплывающая подсказка при наведении на текстовое поле

    	Text_do_18 = new JTextField("", 4);
    	/*	Text_oklad - текстовое поле в которое мы будем вводить количество дете	 до 18 лет
		new JTextField():  "=" - оператор присваивания переменной Text_oklad функций класса JTextField.
		Оператор new создает экземпляр указанного класса
		JTextField() - класс. Является компонентом-текстовым полем.
		4 - размер тектового поля, "" - обозначаем что в данном поле не бует никаких записей
 		*/
    	Text_do_18.setMargin(new Insets(2, 5, 2, 5));//установка внутренних отступов для текстового поля (2-верхний отступ, 5-левый, 2-нижний, 5-правый)
    	Text_do_18.setToolTipText("Введите количество детей.
Если детей нет - введите 0");//всплывающая подсказка при наведении на текстовое поле

    	Text_prem = new JTextField("", 2);    	/*	Text_oklad - текстовое поле в которое мы будем вводить размер премии
		new JTextField():  "=" - оператор присваивания переменной Text_oklad функций класса JTextField.
		Оператор new создает экземпляр указанного класса
		JTextField() - класс. Является компонентом-текстовым полем.
		4 - размер тектового поля, "" - обозначаем что в данном поле не бует никаких записей
 		*/
    	Text_prem.setMargin(new Insets(2, 5, 2, 5));//установка внутренних отступов для текстового поля (2-верхний отступ, 5-левый, 2-нижний, 5-правый)
    	Text_prem.setToolTipText("Введите размер премии.
Если премии нет - введите 0");//всплывающая подсказка при наведении на текстовое поле

    	Box_3000 = new JCheckBox(""); /* Создание компонента флажка для стандартного вычета в размере 3000 руб. */
    	Box_3000.setToolTipText("Подробнее в Налоговом кодексе РФ, статья 218"); // всплывающая подсказка при наведении на компонент флажок.
    	Box_500 = new JCheckBox("");  /* Создание компонента флажка для стандартного вычета в размере 500 руб. */
    	Box_500.setToolTipText("Подробнее в Налоговом кодексе РФ, статья 218");// всплывающая подсказка при наведении на компонент флажок.

    	    	Text_oklad.setInputVerifier(new InputVerifier() {
            public boolean verify(JComponent comp) {
                JTextField textField = (JTextField) comp;
                try {
                    Integer.parseInt(textField.getText());
                    return true;
                } catch (NumberFormatException e) {
                    Toolkit.getDefaultToolkit().beep();
                }
                return false;
            }
        });

    	Text_dni.setInputVerifier(new InputVerifier() {
            public boolean verify(JComponent comp) {
                JTextField textField = (JTextField) comp;
                try {
                    Integer.parseInt(textField.getText());
                    return true;
                } catch (NumberFormatException e) {
                    Toolkit.getDefaultToolkit().beep();
                }
                return false;
            }
        });

    	Text_rab_dni.setInputVerifier(new InputVerifier() {
            public boolean verify(JComponent comp) {
                JTextField textField = (JTextField) comp;
                try {
                    Integer.parseInt(textField.getText());
                    return true;
                } catch (NumberFormatException e) {
                    Toolkit.getDefaultToolkit().beep();
                }
                return false;
            }
        });

    	Text_kol_det.setInputVerifier(new InputVerifier() {
            public boolean verify(JComponent comp) {
                JTextField textField = (JTextField) comp;
                try {
                    Integer.parseInt(textField.getText());
                    return true;
                } catch (NumberFormatException e) {
                    Toolkit.getDefaultToolkit().beep();
                }
                return false;
            }
        });

    	Text_do_18.setInputVerifier(new InputVerifier() {
            public boolean verify(JComponent comp) {
                JTextField textField = (JTextField) comp;
                try {
                    Integer.parseInt(textField.getText());
                    return true;
                } catch (NumberFormatException e) {
                    Toolkit.getDefaultToolkit().beep();
                }
                return false;
            }
        });

    	Text_prem.setInputVerifier(new InputVerifier() {
            public boolean verify(JComponent comp) {
                JTextField textField = (JTextField) comp;
                try {
                    Integer.parseInt(textField.getText());
                    return true;
                } catch (NumberFormatException e) {
                    Toolkit.getDefaultToolkit().beep();
                }
                return false;
            }
        });

        // слушатели для кнопок
        //добавить кнопки на панели
    	PokazZarp.add(PokazRasBut);  	/* 	PokazZarp - кнопка "Рассчитать заработную плату"
	  	add - метод добавления компоненты в контейнер.
	  	PokazZarp - панель содержащая только кнопку
	  	*/

        //добавить метки и текстовые поля на панели
    	DanZarp.add(Label_1);   /*  add - метод добавления компоненты в контейнер. */
    	DanZarp.add(Text_oklad);
    	DanZarp.add(Label_2);
    	DanZarp.add(Label_3);
    	DanZarp.add(Text_dni);
    	DanZarp.add(Label_4);
    	DanZarp.add(Text_rab_dni);
    	DanZarp.add(Label_5);
    	DanZarp.add(Label_6);
    	DanZarp.add(Label_7);/*  add - метод добавления компоненты в контейнер. */
    	DanZarp.add(Text_kol_det);
    	DanZarp.add(Label_8);
    	DanZarp.add(Text_do_18);
    	DanZarp.add(Label_9);
    	DanZarp.add(Box_3000);
    	DanZarp.add(Label_10);
    	DanZarp.add(Box_500);
    	DanZarp.add(Label_11);
    	DanZarp.add(Text_prem);
    	DanZarp.add(Label_12);/*  add - метод добавления компоненты в контейнер. */

    	PokazRasBut.addActionListener(new ActionListener()   /* 	PokazRasBut - кнопка "Рассчитать зарплату"
    		 	"."  - указывает к какой переменной (кнопке) следует применить слушателя.
    		 	addActionListener - добавление слушателя ActionListener к кнопке
    		  	new - Оператор new создает экземпляр указанного класса
    		  	(Для того чтобы кнопки стали функциональными, каждой из них необходимо присвоить обработчик событий,
    		  	который будет отвечать за реагирование на события.
    		  	В нашем случае требуется идентифицировать событие нажатия кнопки – путем щелчка мышью.
    		  	Поэтому будет использоваться интерфейс "ActionListener",
    		  	предназначенный для обработки событий "ActionEvent".
    		  	тело интерфейса указывается ниже после фигурной скобки "{"
    		  	*/
        	   {
    	    public void actionPerformed(ActionEvent e)   /* 	ActionListener" имеет метод "actionPerformed" объекта "ActionEvent",
	      	который реализуется путем простого вызова обработчика событий ActionPerformed.
	      	Ключевое слово public означает, что метод actionPerformed() доступен для любого другого класса Java
	      	Ключевое слово void означает, что метод main() не возвращает данных в программу, которая его вызвала.
	      	*/
    	    {
    	    	if ((Interface.isValidInput(Text_oklad, "размер оклада")) &&
    	    		(Interface.isValidInput(Text_dni, "количество отработанных дней"))&&
    	    		(Interface.isValidInput(Text_rab_dni, "количество рабочих дней в месяце"))&&
    	    		(Interface.isValidInput(Text_kol_det, "количество детей"))&&
    	    		(Interface.isValidInput(Text_do_18, "количество детей"))&&
    	    		(Interface.isValidInput(Text_prem, "размер премии")) )
    	    		/* if - оператор если. * isValidInput проверяет данные на правильность, т.е.
	    		 	если в текстовые поля Text_oklad, Text_dni, Text_rab_dni, Text_kol_det, Text_do_18, Text_prem введены
	    		 	буквы или символы (текст, который невозможно преобразовать в цифры).
	    		   	Если введены некорректные данные, то выдает ошибку "Введите размер оклада"....
	    		 	*/
    	    	{
    	    		if (Integer.parseInt(Zarpl.Text_kol_det.getText())>20) {//если количество детей  больше 20, parseInt - преобразование введенного текста в цифры
    	    			JDialog D=new JDialog();
    	    			JOptionPane.showMessageDialog(D, "Введите правильные данные!", "Ошибка", JOptionPane.WARNING_MESSAGE);
    	    			/* showMessageDialog Отображает модальный диалог с одной кнопкой, которая помечена текстом "Oшибка" (или его локальным эквивалентом).
   	    			 Когда модальный диалог становится видимым, он блокирует пользовательский ввод в другие окна программы.
   	    		 "Введите правильные данные!"  это сообщение отображаемые в диалоге
   	               */
    	    			Zarpl.Text_kol_det.requestFocus();//ставит фокус на строчке Text_rab_dni
    	    			Zarpl.Text_kol_det.setText("");
    	    			/* setText означает написать текст в текстовое поле. Между кавычками ничего нет, значит текстовое поле будет пустым
				    	*/
	                } else if (Integer.parseInt(Zarpl.Text_do_18.getText())>20) { //если количество детей до 18 лет больше 20, parseInt - преобразование введенного текста в цифры
	                	JDialog D=new JDialog();
	                	JOptionPane.showMessageDialog(D, "Введите правильные данные!", "Ошибка", JOptionPane.WARNING_MESSAGE);
	                	/* showMessageDialog Отображает модальный диалог с одной кнопкой, которая помечена текстом "Oшибка" (или его локальным эквивалентом).
		    			 Когда модальный диалог становится видимым, он блокирует пользовательский ввод в другие окна программы.
		    		 "Введите правильные данные!"  это сообщение отображаемые в диалоге
		               */
	                	Zarpl.Text_do_18.requestFocus();//ставит фокус на строчке Text_rab_dni
		    			Zarpl.Text_do_18.setText("");
		    			/* setText означает написать текст в текстовое поле. Между кавычками ничего нет, значит текстовое поле будет пустым
				    	*/
		            } else if (Integer.parseInt(Zarpl.Text_do_18.getText())>Integer.parseInt(Zarpl.Text_kol_det.getText())){ //если количество детей до 18 лет больше чем количество детей, parseInt - преобразование введенного текста в цифры
		            	JDialog D=new JDialog();
	                	JOptionPane.showMessageDialog(D, "Введите правильные данные!", "Ошибка", JOptionPane.WARNING_MESSAGE);
	                	/* showMessageDialog Отображает модальный диалог с одной кнопкой, которая помечена текстом "Oшибка" (или его локальным эквивалентом).
		    			 Когда модальный диалог становится видимым, он блокирует пользовательский ввод в другие окна программы.
		    		 "Введите правильные данные!"  это сообщение отображаемые в диалоге
		               */
	                	Zarpl.Text_kol_det.requestFocus();//ставит фокус на строчке Text_rab_dni
		    			Zarpl.Text_kol_det.setText("");
		    			/* setText означает написать текст в текстовое поле. Между кавычками ничего нет, значит текстовое поле будет пустым
				    	*/
		    			Zarpl.Text_do_18.setText("");
		            } else if (Integer.parseInt(Zarpl.Text_dni.getText())>31) {//если количество дней больше чем 31, parseInt - преобразование введенного текста в цифры
    	    			JDialog D=new JDialog();
    	    			JOptionPane.showMessageDialog(D, "Введите правильные данные!", "Ошибка", JOptionPane.WARNING_MESSAGE);
    	    			/* showMessageDialog Отображает модальный диалог с одной кнопкой, которая помечена текстом "Oшибка" (или его локальным эквивалентом).
   	    			 Когда модальный диалог становится видимым, он блокирует пользовательский ввод в другие окна программы.
   	    		 "Введите правильные данные!"  это сообщение отображаемые в диалоге
   	               */
    	    			Zarpl.Text_dni.requestFocus();//ставит фокус на строчке Text_rab_dni
    	    			Zarpl.Text_dni.setText("");    /* setText означает написать текст в текстовое поле. Между кавычками ничего нет, значит текстовое поле будет пустым
				    	*/
	                } else if (Integer.parseInt(Zarpl.Text_rab_dni.getText())>31) {//если количество рабочих дней больше чем 31, parseInt - преобразование введенного текста в цифры
	                	JDialog D=new JDialog();
	                	JOptionPane.showMessageDialog(D, "Введите правильные данные!", "Ошибка", JOptionPane.WARNING_MESSAGE);
	                	/* showMessageDialog Отображает модальный диалог с одной кнопкой, которая помечена текстом "Oшибка" (или его локальным эквивалентом).
		    			 Когда модальный диалог становится видимым, он блокирует пользовательский ввод в другие окна программы.
		    		 "Введите правильные данные!"  это сообщение отображаемые в диалоге
		               */
	                	Zarpl.Text_rab_dni.requestFocus();//ставит фокус на строчке Text_rab_dni
	                	Zarpl.Text_rab_dni.setText("");
	                	/* setText означает написать текст в текстовое поле. Между кавычками ничего нет, значит текстовое поле будет пустым
				    	*/
		            } else if (Integer.parseInt(Zarpl.Text_dni.getText())>Integer.parseInt(Zarpl.Text_rab_dni.getText())){ //если количество отработанных дней больше чем рабочих, parseInt - преобразование введенного текста в цифры
		            	JDialog D=new JDialog();
	                	JOptionPane.showMessageDialog(D, "Введите правильные данные!", "Ошибка", JOptionPane.WARNING_MESSAGE);
	                	/* showMessageDialog Отображает модальный диалог с одной кнопкой, которая помечена текстом "Oшибка" (или его локальным эквивалентом).
		    			 Когда модальный диалог становится видимым, он блокирует пользовательский ввод в другие окна программы.
		    		 "Введите правильные данные!"  это сообщение отображаемые в диалоге
		               */
	                	Zarpl.Text_dni.requestFocus();//ставит фокус на строчке Text_rab_dni
		    			Zarpl.Text_dni.setText("");
		    			/* setText означает написать текст в текстовое поле. Между кавычками ничего нет, значит текстовое поле будет пустым
				    	*/
		    			Zarpl.Text_rab_dni.setText("");
		            }  {
		            Rasch.RacZarDanPer();/*	данные которые записаны в текстовые поля преобразовываются в тип Integer и сохраняются в переменные.
	    		  	методRacZarDanPer записан в классе Rasch
	    		  	Слева от точки указывается класс содержащий метод указанный после точки.
	    		  	*/
		            Interface_Zarpl.main(null);
		            /* 	что будет происходить при нажатии на кнопку
    				(открывается новая оконная форма класса Interface_Zarpl - Расчет зарплаты)
    				программа передает в метод main класса Interface_Zarpl null.
    				Тем самым происходит запуск метода без передачи переменных
    				*/
		            Interface.frame.setVisible(false); //Окно Зарплатный калькулятор становится невидимым
		            }
    	    	}

    	    }
    	   });

    	}
}
<file_sep>/src/pack/Rasch.java
package pack;
/*	указывает пакет "pack", в котором находится файл класса
Пакет (package) — это некий контейнер, который используется для того, чтобы изолировать имена классов.
Например, вы можете создать класс List, заключить его в пакет и не думать после этого о возможных конфликтах,
которые могли бы возникнуть если бы кто-нибудь еще создал класс с именем List.
 */

public class Rasch {
	/*	(Public)модификатор доступа, который позволяет программисту управлять видимостью любого метода и любой переменной.
    В данном случае модификатор доступа public означает, что класс Rasch виден и доступен любому классу.
	В этой строке использовано зарезервированное слово class.
	Оно говорит транслятору, что мы собираемся описать новый класс Rasch.
	описываем Rasch как класс, доступный другим классам (public)
	*/
	static double oklad, dni,rab_dni, kol_det, do_18, prem, doh2y,dni_bol, doh1y, dni_otp, bez_nal,vt_det,vt, nal_baza, nalog,premi,zarpl,sr_dn_bol,bol, bol_1, kof,k,sr_dn_otp,otp;
	static int box_3000_1,box_500_1;

	/*************** Зарплата **********************/
	public static void RacZarDanPer() {
		/*  Модификатор доступа public означает, что метод RacZarDanPer() виден и доступен любому классу.
	    static означает, что не нужно создавать экземпляр(копию) объекта Rasch в памяти, чтобы использовать этот метод.
	    void означает, что метод RacZarDanPer() не возвращает данных в программу, которая его вызвала.
	    Метод RacZarDanPer с пустыми скобками, это означает, что метод не имеет аргументов(параметров)
	    */
		oklad = Integer.parseInt(Zarpl.Text_oklad.getText());
		dni = Integer.parseInt(Zarpl.Text_dni.getText());
		rab_dni = Integer.parseInt(Zarpl.Text_rab_dni.getText());
		kol_det = Integer.parseInt(Zarpl.Text_kol_det.getText());
	    do_18 = Integer.parseInt(Zarpl.Text_do_18.getText());
	    prem = Integer.parseInt(Zarpl.Text_prem.getText());
		if (Zarpl.Box_3000.isSelected()){ box_3000_1=1; } else box_3000_1=0;
	    if (Zarpl.Box_500.isSelected()){ box_500_1=1; } else box_500_1=0;
	    }

	public static void Itog_zarpl() {/*  Модификатор доступа public означает, что метод Itog() виден и доступен любому классу.
	    static означает, что не нужно создавать экземпляр(копию) объекта Rasch в памяти, чтобы использовать этот метод.
	    void означает, что метод Itog() не возвращает данных в программу, которая его вызвала.
	    Метод Itog с пустыми скобками, это означает, что метод не имеет аргументов(параметров)
	    */
		//НАЧИСЛЕНО  (кол-во часов*почас.оплата)
	    bez_nal=oklad/rab_dni*dni;

	    //ВЫЧЕТЫ
	    //стандартный вычет на детей. на первого ребенка - 1400, второго - 1400, третьего и больше - 3000 руб.
	    if (do_18==0){vt_det=0;//если детей до 18 лет нет - то стандартный вычет на детей=0
	    } else if ((kol_det-do_18)>=2){vt_det=3000*do_18;
	    } else if ((kol_det-do_18)==1){vt_det=1400+3000*(do_18-1);
	    } else if ((kol_det-do_18)==0){
	    	if (do_18==1){vt_det=1400;
	    	} else {vt_det=1400*2+3000*(do_18-2);}}

	    vt=(3000*box_3000_1)+(500*box_500_1)+vt_det;//box_3000_1 - стандартный вычет 3000 (для лиц получивших инвал.),box_500_1- стандартный вычет 500 руб (участников войны, пострадавших от радиации)

	    //НАЛОГООБЛАГАЕМАЯ БАЗА (оклад- вычеты)
	    nal_baza= bez_nal - vt;
	    if (nal_baza<0) {nal_baza=0;}

	    //Налог на доходы физ.лиц 13%   ((зарпл.начисл.-вычеты)*0.13) или налогообл.база*0,13
	    nalog= nal_baza * 0.13;
	    if (nalog<0) {nalog=0;} //налог не может быть меньше 0

	    //ПРЕМИЯ((зарплата начислено-налог)*размер премии в процентах/100)
	    premi=(bez_nal-nalog) * prem/100;

	    //ЗАРПЛАТА К ВЫДАЧЕ (зарпл.начисл.-налоги+премия)
	    zarpl=bez_nal-nalog+premi;

	    //форматированный вывод
	    String bez_nal_1 = String.format("%.2f", bez_nal);
	    String nal_baza_1 = String.format("%.2f", nal_baza);
	    String nalog_1 = String.format("%.2f", nalog);
	    String premi_1 = String.format("%.2f", premi);
	    String zarpl_1 = String.format("%.2f", zarpl);
	    /* статический метод String.format()используется для создания форматированной строки без ее вывода
		   "%.2f" - будет выводится 2 знака после запятой
		    */
	    // записать результат в текстовую метку  в окне "Расчет зарплаты"
	    Interface_Zarpl.Label_bez_nal.setText(bez_nal_1);
	    Interface_Zarpl.Label_nal_baza.setText(nal_baza_1);
	    Interface_Zarpl.Label_nalog.setText(nalog_1);
	    Interface_Zarpl.Label_premi.setText(premi_1);
	    Interface_Zarpl.Label_zarpl.setText(zarpl_1);

	}

	/*************** Больничный **********************/
	public static void RacBolDanPer() {/*  Модификатор доступа public означает, что метод RacZarDanPer() виден и доступен любому классу.
	    static означает, что не нужно создавать экземпляр(копию) объекта Rasch в памяти, чтобы использовать этот метод.
	    void означает, что метод RacZarDanPer() не возвращает данных в программу, которая его вызвала.
	    Метод RacZarDanPer с пустыми скобками, это означает, что метод не имеет аргументов(параметров)
	    */
		doh2y = Integer.parseInt(Bolnic.Text_2years.getText());//из панели Bolnic считываем данные которые ввел пользователь в поле Text_2years
		dni_bol = Integer.parseInt(Bolnic.Text_dni_bol.getText());
		k=1;
		if (Bolnic.q==0) {k=0;kof=1;} //q-переменная которая отвечает за выпадающий список.q=0 - менее 6 месяцев, q=1- до 5 лет, q=2-от5до8лет, q=3-более 8.
		else if (Bolnic.q==1) {kof=0.6;}
		else if (Bolnic.q==2) {kof=0.8;}
		else {kof=1;}
		}

	public static void Itog_bolnic() {/*  Модификатор доступа public означает, что метод Itog() виден и доступен любому классу.
	    static означает, что не нужно создавать экземпляр(копию) объекта Rasch в памяти, чтобы использовать этот метод.
	    void означает, что метод Itog() не возвращает данных в программу, которая его вызвала.
	    Метод Itog с пустыми скобками, это означает, что метод не имеет аргументов(параметров)
	    */

	    //БОЛЬНИЧНЫЙ (среднедневной заработок(Доход за 2 года/730,кол-во дней в 2 годах)* число дней по болезни*%оплаты больничного листа)
	    //СРЕДНИЙ ДНЕВНОЙ ЗАРАБОТОК (доход за 2 года/730)
	    if ((doh2y<(5965*24))||(k==0)){doh2y=5965*24;} //5965-МРОТ по Башкирии за месяц(минимальный размер оплаты труда), 24 месяца - 2 года, Если k=0-сотрудник работает меньше 6 мес., его доход считается по МРОТ. Если доход сотрудника за 2 года меньше чем за 2 года по МРОТ, то доход считается по МРОТ.
	    sr_dn_bol=doh2y/730;

	    //ОПЛАТА 1 дня больничного
	    bol_1=sr_dn_bol*kof;// оплата 1 дня больничного с учетом страхового стажа.q=0 - менее 6 месяцев, q=1- до 5 лет, q=2-от5до8лет, q=3-более 8.

	    //СУММА БОЛЬНИЧНОГО (оплата1дня больничн* дни болезни)
	    bol=bol_1* dni_bol;

	    //форматированный вывод
	    String sr_dn_bol_1 = String.format("%.2f", sr_dn_bol);
	    String bol_1_1 = String.format("%.2f", bol_1);
	    String bol_2 = String.format("%.2f", bol);
	    /* статический метод String.format()используется для создания форматированной строки без ее вывода
		   "%.2f" - будет выводится 2 знака после запятой
		    */
	    // записать результат в текстовую метку в окне "Расчет больничного"
	    Interface_Bolnic.Label_sr_dn_bol.setText(sr_dn_bol_1);
	    Interface_Bolnic.Label_1_bol.setText(bol_1_1);
	    Interface_Bolnic.Label_bol.setText(bol_2);
	}

	/*************** Отпускные **********************/

	public static void RacOtpDanPer() { /*  Модификатор доступа public означает, что метод RacZarDanPer() виден и доступен любому классу.
	    static означает, что не нужно создавать экземпляр(копию) объекта Rasch в памяти, чтобы использовать этот метод.
	    void означает, что метод RacZarDanPer() не возвращает данных в программу, которая его вызвала.
	    Метод RacZarDanPer с пустыми скобками, это означает, что метод не имеет аргументов(параметров)
	    */
		doh1y = Integer.parseInt(Otp.Text_1year.getText());
		dni_otp = Integer.parseInt(Otp.Text_dni_otp.getText());
		}

	public static void Itog_otp() {/*  Модификатор доступа public означает, что метод Itog() виден и доступен любому классу.
	    static означает, что не нужно создавать экземпляр(копию) объекта Rasch в памяти, чтобы использовать этот метод.
	    void означает, что метод Itog() не возвращает данных в программу, которая его вызвала.
	    Метод Itog с пустыми скобками, это означает, что метод не имеет аргументов(параметров)
	    */

	    //ОТПУСК(зарплата за год/12 месяцев /29.3(среднее число дней в месяце)* кол-во дней отпуска)
		//СРЕДНИЙ ДНЕВНОЙ ЗАРАБОТОК (доход за 1 года/12 мес./29,3)
	    if ((doh1y<(5965*12))||(k==0)){doh1y=5965*12;} //5965-МРОТ по Башкирии за месяц(минимальный размер оплаты труда), 24 месяца - 2 года, Если k=0-сотрудник работает меньше 6 мес., его доход считается по МРОТ. Если доход сотрудника за 2 года меньше чем за 2 года по МРОТ, то доход считается по МРОТ.
	    sr_dn_otp=doh1y/12/29.3;

	    //СУММА ОТПУСКНЫХ (среднедн.зар.* дни отпуска)
	    otp=sr_dn_otp* dni_otp;

	    //форматированный вывод
	    String sr_dn_otp_1 = String.format("%.2f", sr_dn_otp);
	    String otp_1 = String.format("%.2f", otp);
	    /* статический метод String.format()используется для создания форматированной строки без ее вывода
		   "%.2f" - будет выводится 2 знака после запятой
		    */
	    // записать результат в текстовую метку в окне "Расчет отпускных"
	    Interface_Otp.Label_sr_dn_otp.setText(sr_dn_otp_1);
	    Interface_Otp.Label_otp.setText(otp_1);

	}

}

<file_sep>/src/pack/Interface.java
package pack; /*	указывает пакет "pack", в котором находится файл класса
Пакет (package) — это некий контейнер, который используется для того, чтобы изолировать имена классов.
 */

import java.awt.*;
/*	java. - Все стандартные классы, поставляемые с системой Java, хранятся в пакете j ava.
подключение пакета awt, содержащего базовые графические функции:GridLayout, BorderLayout и т.д.
В отличие от java.awt, javax.swing имеет более гибкую систему управления
и более широкий набор функций
*/
import javax.swing.*;
/*	Импортируем:
javax.* — стандартные расширения
(Стандартные расширения (standard extensions) — это пакеты или наборы пакетов Java)
Swing Библиотека графического интерфейса (конкретный пакет),
"*"-включение всех элементов библиотеки Swing (jbutton,jpanel,jlabel и т.д.)
(точка) используется для выделения элементов из ссылки на объект.
"Звездочка" в конце java.awt.* означает "включить все методы", но она не распространяется на библиотеки-наследники
(то есть содержащие классы, произведённые от классов библиотеки более высокого уровня).
Поэтому  библиотеки java.awt.event.ActionEvent и java.awt.event.ActionListener необходимо включить в нашу программу,
несмотря на её наличие в библиотеке более высокого уровня java.awt
	Подключаем объект event, который содержит свойства, описывающие некое событие.
Каждый раз, когда происходит какое-либо событие,
объект Event передается соответствующей программе обработки.
Используемым событием в нашей программе являются ACTION события.
	 */

public class Interface extends JFrame {
	/*	(Public)модификатор доступа, который позволяет программисту управлять видимостью любого метода и любой переменной.
	В данном случае модификатор доступа public означает, что класс Interface виден и доступен любому классу.
	В этой строке использовано зарезервированное слово class.
	Оно говорит транслятору, что мы собираемся описать новый класс Interface.
	Описываем Interface как класс, доступный другим классам (public)
	Класс наследует функции элемента JFrame, который определён где-то в стандартной библиотеке awt (вот зачем
	мы её подключали). Этот самый JFrame уже содержит в себе всё необходимое для создания и функционирования
	окна программы - нам остаётся только использовать его методы в своей программе.
	{ <- Полное описание класса располагается между открывающей
	фигурной скобкой в первой строке и парной ей закрывающей фигурной скобкой -> }
	*/

	/**
	 *
	 */
	private static final long serialVersionUID = 1L;
	public static Interface frame = new Interface();

	public static void main(String[] args) {/*  Модификатор доступа public означает, что метод main(String[] args)виден и доступен любому классу. static означает, что не нужно создавать экземпляр(копию) объекта Index в памяти, чтобы использовать этот метод.
				С помощью static объявляются методы и переменные класса, используемые для работы с классом в целом.
				Эти методы могут непосредственно работать только с локальными и статическими переменными.
				void означает, что метод main(String[] args)не возвращает данных в программу, которая его вызвала,
				а просто выводит на экран строку.
				В методе main слова String[] args означают,что этот может получать массив объектов с типом String, т.е. текстовые данные.
				Программа может состоять из нескольких классов, но только один из них содержит метод main().
				Все существующие реализации Java-интерпретаторов, получив команду интерпретировать класс,
				начинают свою работу с вызова метода main.
				*/
		EventQueue.invokeLater(new Runnable() {
			public void run() {/* public - модификатор доступа, означающий, что метод run()виден и доступен любому классу.
				void означает, что метод run()не возвращает данных в программу, которая его вызвала,
				а просто выводит на экран строку.
				Метод run с пустыми скобками, т.е. метод не имеет аргументов(параметров)
				*/
				try { /*Для задания блока программного кода, который требуется защитить от исключений, используется ключевое слово try.
					 Сразу же после try-блока помещается блок catch, задающий тип исключения которое необходимо обрабатывать  */

					frame.setVisible(true); /* Устанавливаем видимость окна Зарплатный калькулятор */

				} catch (Exception e) { /* Для задания блока программного кода, который требуется защитить от исключений, используется ключевое слово try.
					Сразу же после try-блока помещается блок catch, задающий тип исключения которое вы хотите обрабатывать.
					Исключение – это проблемная ситуация, возникающая по мере выполнения кода программы. Для ловли этих исключений
					и существует специальная конструкция try {} catch {}
						*/
					e.printStackTrace();
				}
			}
		});
	}

	public static JTabbedPane JTP1; /* Модификатор доступа public означает,что переменная --JTP1-- доступна любому классу.
	 JTabbedPane – панель вкладок Java Swing. */

	public Interface() {/* Модификатор доступа public означает, что метод Index()виден и доступен любому классу.
		static означает, что не нужно создавать экземпляр(копию) объекта Index в памяти, чтобы использовать этот метод.
		С помощью static объявляются методы и переменные класса, используемые для работы с классом в целом.
		Эти методы могут непосредственно работать только с локальными и статическими переменными.  */

		setTitle("Зарплатный калькулятор"); //устанавливает название окна
		setSize(400, 550); // указывает ширину и высоту.
		setLocationRelativeTo(null);//установить посередине экрана

		//по закрытию формы - закрывать приложение
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		JTP1 = new JTabbedPane(JTabbedPane.TOP);
        getContentPane().add(JTP1);
        /* Для добавления новой вкладки на панель используется метод addTab. При добавлении новой вкладки
        необходимо передать строку, которая будет являться заголовком вкладки, то есть отображаться на
        самом ярлычке. Кроме этого вторым параметром необходимо указать панель или контейнер,
        который будет располагаться уже на самой вкладке  */

        Zarpl zarpl = new Zarpl();
        JTP1.addTab("Заработная плата", zarpl);

        Bolnic boln = new Bolnic();
        JTP1.addTab("Больничный", boln);

        Otp otp = new Otp();
        JTP1.addTab("Отпуск", otp);

	}

	  //проверка данных, введенных пользователем
    public static boolean isValidInput(JTextField jtxt, String description) {

        JDialog D = new JDialog();
		//если был введен какой-либо текст
        if (jtxt.getText().trim().length() > 0) {
            //проверка на ввод только целого числа
            try { /* Для задания блока программного кода, который требуется защитить от исключений, используется ключевое слово try.
				Сразу же после try-блока помещается блок catch, задающий тип исключения которое вы хотите обрабатывать.
				Исключение – это проблемная ситуация, возникающая по мере выполнения кода программы. Для ловли этих исключений
				и существует специальная конструкция try {} catch {}
					*/
                //попытка преобразовать текст в целое число
                int num = Integer.parseInt(jtxt.getText());

                //если все нормально - возвращаем true
                return true;

            } catch (NumberFormatException e) {

                //предупреждение - неверный формат числа
                JOptionPane.showMessageDialog(D, "Вы должны ввести целое число!", "Ошибка", JOptionPane.WARNING_MESSAGE);

                //расположить курсор в текстово окне, чтобы пользователь еще раз ввел число
                jtxt.requestFocus();
                jtxt.setText("");

                //ошибка - возвращаем false
                return false;
            }

        } else {// если пользователь не ввели никаких данных

            //предупреждение, что нужно ввести данные
            JOptionPane.showMessageDialog(D, "Введите " + description, "Ошибка", JOptionPane.WARNING_MESSAGE);

            //расположить курсор в текстово окне, чтобы пользователь еще раз ввел число
            jtxt.requestFocus();
            jtxt.selectAll();

            //ошибка - возвращаем false
            return false;
        }
    }

}


text:
<repo_name>yomj1/first-react-app<file_sep>/src/App.js
import logo from './logo.svg';
import './App.css';
import 'bootstrap/dist/css/bootstrap.css'
function App(){
  return (
      <form onSubmit="" className="form-group" id="login-form">

          <input type="text"
            class="form-control" name="" id="" aria-describedby="helpId" placeholder="Username"/>

          <input type="password"
            class="form-control" name="" id="" aria-describedby="helpId" placeholder="<PASSWORD>"/>

        <button type="submit" class="btn btn-primary">Log in</button>
      </form>
  )
}

// function App() {
//   return (
//

//
//
//

//           Edit src/App.js and save to reload.
//

//
//           Learn React
//
//
//

//   );
// }

export default App;

repo_language: JavaScript


text:
<file_sep>$(document).ready(function() {
  $('li a').on('click', function(event){
    console.log('You clicked on a note: ' + $(this).html());
    event.preventDefault();
    var current_element = $(this).parent();
    $.ajax({
      url: $(this).attr('href'),
      type: 'get',
      dataType: 'json'
    })
    .done(function(response){
      console.log("success");
      // console.log($(this).text);
      var stub = '
'+response.text+'
';
      current_element.after(stub);
    })
    .fail(function(){
      console.log("failure");
    });
  });

//   $('#submit').on('click', function(event){
//     event.preventDefault();
//     $.ajax({
//       url: $('this').attr('action'),
//       type: $('this').attr('method')
//       data: $('this').serialize;
//     })
//     .done(function(response){
//       console.log(response);
//     })
//     .fail(funtion(){
//       console.log("Nope.");
//     }).
//   });
// });
<file_sep>body {
  background-color: #2c3e50;
}

.container {
  background-color: #f1c40f;
  margin: 20px auto;
  width: 300px;
  padding: 0px 20px 20px 20px;
  border: 3px dashed red ;
}
th {
  text-align: left;
}

h1 {
  color: #313131;
  text-shadow: 0 1px 0 #FFF;
}

ul {
  margin-left: 0;
  padding: 0
}

li {
  list-style-type: none;
  margin-left: 0;
  padding: 0;
}

a, a:visited {
  color: blue;
  text-decoration: none;
}

form {
  display: inline;
}

button  {
  margin: 0 0 0 5px;
  padding: 5 3 5 3;
  border: none;
  border-radius: 10px;
  background-color: #2980b9;
  color: #ecf0f1;
}

.edit_note form input, textarea {
  display: block;
  margin: 10px;
}

.preview {
  color: #505050;
}<file_sep>get '/' do
  # Look in app/views/index.erb
  @notes = Note.all
  erb :index
end

get '/notes/:id' do
  @this_note = Note.find(params[:id])
  if request.xhr?
    content_type :json
    @this_note.to_json
  else
    erb :this_note
  end
end

post '/create_note' do
 Note.create(name: params['name'], text: params['text'])
 redirect '/'
end

post '/remove_note/:id' do
  Note.destroy(params[:id])
  redirect '/'
end

get '/edit_note/:id' do
  @edit_note = Note.find(params[:id])
  erb :edit_note
end

post '/edit_note/:id' do
  Note.update(params[:id], name: params[:name], text: params[:text])
  redirect '/'
end

languages: JavaScript Ruby CSS

repo_name: JonathanTR/Notes


text:
<repo_name>mishelen/react-test-task<file_sep>/components/Main.js
export default class Main extends React.Component {
	render() {
		return (

Lorem ipsum dolor.

Consectetur adipisicing elit. Ab aut autem, doloribus, ea enim inventore itaque iure libero molestiae numquam quis quisquam rem, repellendus saepe?

		);
	}
};<file_sep>/components/Listing.js
import Orders from './Orders';

let amount = Math.floor(Math.random() * 20);
var dataList = [];
for (let i = 0; i < amount; i++) dataList.push({id: faker.random.number() * 11,clientID: faker.random.number(), date: faker.date.past()});

export default class Listing extends React.Component {
	constructor(props) {
		super(props);
	}

	render() {
		return (
			<Orders data={dataList}/>
		);
	}
}<file_sep>/components/Layout.js
import Main from './Main';
import Listing from './Listing';

export default class Layout extends React.Component {
	render() {
		return (

				<Listing></Listing>

		);
	}
};<file_sep>/app.js
import InputForm from './components/InputForm';
import Sidebar from './components/Sidebar';
import Layout from './components/Layout';

class App extends React.Component {
	render() {
		return (

				<Sidebar/>
				<Layout/>

		);
	}
};

//Address:
//
//	address_id: integer
//address: text
//city: text
//zip: text

ReactDOM.render(<App/>, document.getElementById('app'));<file_sep>/components/Order.js
export default class Order extends React.Component {
	constructor(props) {
		super(props);
		this.state = {order: props.order };
		this.showClient = this.showClient.bind(this);
	}
	showClient(e) {
		this.setState({showClient: true});
	}

	render() {
		return (

id: {this.props.order.id}

clientID: {this.props.order.clientID}

Date: {this.props.order.date.toLocaleString()}

						<button className="ui button" onClick={this.showClient}>Edit</button>

		);
	}
};

Order.defaultProps = {
	order: {
		id      : '',
		clientID: '',
		date    : ''
	},
	showClient: false,
	showClientAdress: false
};

Order.propTypes = {
	order:{
		id: React.PropTypes.number,
		clientID:  React.PropTypes.number,
		date: React.PropTypes.date
	}
};<file_sep>/components/Sidebar.js
export default class Sidebar extends React.Component {
	render() {
		return (

					Main

					Orders

		);
	}
};

repo_name: mishelen/react-test-task


text:
<file_sep>const Emitter = function(){
    const self = {};
    const events = {};
    const eventCount = {};
    self._on = function(type,listener){
        if(eventCount[type] >= 10 ){
            throw `Event: ${type} has to many listeners`;
        }
        events[type] = events[type] || [];
        events[type].push(listener);
        eventCount[type] = eventCount[type] + 1;
    };
    self._emit = function(type){
        if(events[type]){
            events[type].forEach((listener) => listener())
        }
        else {
            throw `Error: ${type} has no listeners`;
        }
    };
    self._removeListeners = function(type){
        if(type){
            events[type] = [];
            eventCount[type] = 0;
        }
    };
    return self;
};

class ClassEmitter {
    constructor(){
        this.eventCount = {};
        this.events = {};
    }
    _on (type,listener){
        if (this.eventCount[type] >= 10){
            throw `Error: ${type} has to many listeners`;
        }
        else {
            this.events[type] = this.events[type] || [];
            this.events[type].push(listener);
            this.eventCount[type] = this.eventCount[type] + 1;
        }
    }
    _emit(type){
        if(this.events[type]){
            this.events[type].forEach(function(listener){
                listener();
            });
        }
        else {
            throw `Error: ${type} has now listeners`;
        }
    }
    _removeListeners (type){
      if(type){
          this.events[type] = [];
      }
      else {
          this.events = {};
      }
    }
}

module.exports = {
    ClassEmitter : ClassEmitter,
    Emitter : Emitter

}<file_sep>/******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};

/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {

/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId])
/******/ 			return installedModules[moduleId].exports;

/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			exports: {},
/******/ 			id: moduleId,
/******/ 			loaded: false
/******/ 		};

/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);

/******/ 		// Flag the module as loaded
/******/ 		module.loaded = true;

/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}

/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;

/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;

/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";

/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ function(module, exports) {

	"use strict";

	var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

	var Emitter = function Emitter() {
	    var self = {};
	    var events = {};
	    var eventCount = {};
	    self._on = function (type, listener) {
	        if (eventCount[type] >= 10) {
	            throw "Event: " + type + " has to many listeners";
	        }
	        events[type] = events[type] || [];
	        events[type].push(listener);
	        eventCount[type] = eventCount[type] + 1;
	    };
	    self._emit = function (type) {
	        if (events[type]) {
	            events[type].forEach(function (listener) {
	                listener();
	            });
	        } else {
	            throw "Error: " + type + " has no listeners";
	        }
	    };
	    self._removeListeners = function (type) {
	        if (type) {
	            events[type] = [];
	            eventCount[type] = 0;
	        }
	    };
	    return self;
	};

	var ClassEmitter = function () {
	    function ClassEmitter() {
	        _classCallCheck(this, ClassEmitter);

	        this.eventCount = {};
	        this.events = {};
	    }

	    _createClass(ClassEmitter, [{
	        key: "_on",
	        value: function _on(type, listener) {
	            if (this.eventCount[type] >= 10) {
	                throw "Error: " + type + " has to many listeners";
	            } else {
	                this.events[type] = this.events[type] || [];
	                this.events[type].push(listener);
	                this.eventCount[type] = this.eventCount[type] + 1;
	            }
	        }
	    }, {
	        key: "_emit",
	        value: function _emit(type) {
	            if (this.events[type]) {
	                this.events[type].forEach(function (listener) {
	                    listener();
	                });
	            } else {
	                throw "Error: " + type + " has now listeners";
	            }
	        }
	    }, {
	        key: "_removeListeners",
	        value: function _removeListeners(type) {
	            if (type) {
	                this.events[type] = [];
	            } else {
	                this.events = {};
	            }
	        }
	    }]);

	    return ClassEmitter;
	}();

	module.exports = {
	    ClassEmitter: ClassEmitter,
	    Emitter: Emitter

	};

/***/ }
/******/ ]);

repo_name: Gemisheresy/Emitters